Make QC partition, i.e. many QC to avoid bottleneck of mutexes in it.
Query should be divided by QCs without parsing (QC answer should be given without parsing the query)
1) Divide query by its text hash + flags value.
+ even distribution
+ fully automatic and 0 management
– duplicating queries
– no ability to manage QCs by task
2) Divide queries by current DB and other flags (client text attributes for example (new feature of MySQL 5.6 and MariaDB 10.*)
+ more precise management by task
+ less duplication in the caches
– more complex setup
QC can be changed to plugin intrface and we can plug old (for small installations) and petitioned (for advanced).
Current engine interface suppose that there is only one QC and we can't avoid storing the same tables/queries in different QC's