半官方的 MySQL blog 上宣佈了拔掉 mysql_query_cache
的計畫:「MySQL 8.0: Retiring Support for the Query Cache」。
作者開頭引用了 ProxySQL 的人對 MySQL Query Cache 的說明:
Although MySQL Query Cache was meant to improve performance, it has serious scalability issues and it can easily become a severe bottleneck.
主要問題在於 MySQL Query Cache 在多 CPU 環境下很難 scale,很容易造成一堆 thread 在搶 lock。而且作者也同意 ProxySQL 的說法,將 cache 放到 client 的效能比較好:
We also agree with Rene’s conclusion, that caching provides the greatest benefit when it is moved closer to the client:
可以看到 Query Cache 在複雜的環境下對效能極傷。而之前也提到過類似的事情了:「Percona 對 mysql_query_cache 的測試 (以 Magento 為例)」、「關閉 MySQL 的 Query Cache」。
一般如果要 cache 的話,透過 InnoDB 裡良好的 index 應該還可以撐不少量起來。