MySQL 5.6からデフォルトでquery_cache_typeが無効になっているのはなぜですか?


28

MySQL 5.6にアップグレードし、dbサーバーのロードが大幅に増加query_cache_typeするのを確認し始め、最終的には5.6からデフォルトでオフになっていることがわかりました 。

再度有効にし、読み込みが減少するのを確認します。なぜ、MySQL 5.6からデフォルトでこの値が無効になっているのですか?有効にすると問題が表示されません。

回答:


39

理由を理解するには、InnoDBの履歴が必要です。ここに行く:

戦争物語

InnoDBとクエリキャッシュは常に戦争状態にあります。InnoDBは、InnoDBバッファープールの変更を検査し、同じ変更についてクエリキャッシュをクロスチェックする場合、非常に手間がかかる傾向があります。

平和条約

MySQL 5.0より前では、InnoDBのクエリキャッシュは無効でした。現在、InnoDBはそれと対話します。問題を簡素化するために、query_cache_sizeを0に設定して、クエリキャッシュを無効にすることができます。

query_cache_timeMySQLドキュメントによると

query_cache_typeを0に設定してサーバーを起動すると、クエリキャッシュミューテックスがまったく取得されません。つまり、実行時にクエリキャッシュを有効にできず、クエリ実行のオーバーヘッドが減少します。

降伏条件

query_cache_sizeを0に設定することは、万能ソリューションではありません。

そもそも戦争の理由はオーバーヘッドです。InnoDBは常に変更を検査します。クエリキャッシュを大きくすると、InnoDBの動作がさらに難しくなります。クエリキャッシュを無効にすると、InnoDBとクエリキャッシュを満足させることができます。ただし、あなた(開発者/ DBA)は、そのような平和条約が実施されていても、クエリのパフォーマンスが悪いということで、その戦争の犠牲者になる可能性があります。

以下に応じて

  • 仕事量
  • 変更の頻度
  • 同じデータを読み取る頻度

query_cache_sizeには、パフォーマンスを向上させると思われる数値を設定する必要があります(これは、アンダーグラウンドムーブメントを開始することに相当します)。

エピローグ

私がこの戦争の物語をどこで思いついたのか疑問に思っているなら、私の古い投稿を見てください

ハイパフォーマンスMySQL(第2版)のPages 209-215からこれを学んだため、注意深く読んでください

クエリキャッシュを他のユーザーに対して無効にすることをお勧めします

注:質問はquery_cache_typeに関するものであることがわかりました。クエリキャッシュに影響します。キャッシュを無効にすると、InnoDBがキャッシュを支配しなくなります。query_cache_typeを手動で設定すると、単に開発者/ DBAがクエリキャッシュで発生するクエリのタイプを慎重に考えるようになります。


こんにちは、すべてのリンクを読みました。実際、クエリキャッシュを再度オフにしようとしましたが、負荷が再び大幅に増加するのがわかります。したがって、再度オンにする必要があります。私はあなたが多分ちょうど私たちのアプリケーションは、読み取り重いがあると、クエリキャッシュがロードを減らすために非常に便利です、間違っている言うつもりはない...(私たちのサイトはワードプレスを実行している)
ヨガ

3
SOの投稿がこのように読まれるだけなら(楽しいアナロジーをありがとう)!Rolandoの幸運な子供たちは、毎晩このようなMySQLの就寝時の話を聞かされるに違いありません!;)
rinogo

2
「ハイパフォーマンスMySQL(第2版)のページ209〜215」は、「クエリキャッシュが役立つとき」から最後までの「MySQLクエリキャッシュ」という章を指します。これは、第3版の320〜329ページに対応しています。
ピーターV.モーヒ

8

これがここにある理由を説明するブログ投稿があります

短いバージョン: クエリキャッシュにより、マルチコアマシンでスケーラビリティの問題が発生します。そのため、デフォルトでは無効になっています。


私のポストへのフォローアップとして、スチュワート・スミスが悪く、「桁」として影響を説明しflamingspork.com/blog/2014/06/05/...
モルガンTocker

4

答えを完成させるために、クエリキャッシュ機能を「置き換える」ためのOracleのプッシュはmemcached統合です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.