MySQL には以前、クエリ キャッシュ (Query Cache) がありました。8.0 以降では、このクエリ キャッシュは使用されなくなりました。では、これを廃止する理由は何でしょうか?この記事ではそれについて紹介します。 MySQL クエリ キャッシュは、クエリ結果のキャッシュです。 SEL で始まるクエリをハッシュ テーブルと比較し、一致する場合は前のクエリの結果を返します。一致させる場合、クエリはバイトごとに一致させる必要があります。たとえば、SELECT * FROM t1; は select * from t1; と同じではありません。また、不確実なクエリ結果の一部はキャッシュできず、テーブルを変更すると、これらのテーブルのすべてのキャッシュが無効になります。したがって、クエリ キャッシュの最適なシナリオは読み取り専用であり、特に数百万行を調べて数行のみを返す必要がある複雑なクエリではこれが当てはまります。クエリがこのような特性を満たしている場合、クエリ キャッシュを有効にするとクエリのパフォーマンスが向上します。 テクノロジーが進歩し、時間が経つにつれて、MySQL エンジニアリング チームは、キャッシュを有効にしてもメリットがあまりないことに気付きました。 まず、クエリ キャッシュの効果はキャッシュ ヒット率に依存します。キャッシュにヒットしたクエリのみが改善できるため、そのパフォーマンスを予測することはできません。 2 番目に、クエリ キャッシュのもう 1 つの大きな問題は、単一のミューテックスによって保護されていることです。多数のコアを持つサーバーでは、クエリの数が多くなると、ミューテックスの競合が多発する可能性があります。 ベンチマークの結果、ほとんどのワークロードはクエリキャッシュを無効にすることで最適に処理されることがわかりました(5.6のデフォルト):query_cache_type = 0 クエリ キャッシュが役立つと思われる場合は、それに応じてテストしてください。
MySQL 8.0 がクエリ キャッシュをキャンセルするもう 1 つの理由は、調査により、キャッシュがクライアントに近いほどメリットが大きくなることが示されているためです。この調査の詳細については、https://proxysql.com/blog/scaling-with-proxysql-query-cache/ を参照してください。 以下の画像は上記の URL からのものです。 さらに、MySQL 8.0 ではパフォーマンス介入のための新しいツールが追加されました。たとえば、クエリ書き換えプラグインを使用して、アプリケーションを変更せずにオプティマイザヒント文を挿入できるようになりました。あるいは、中間キャッシュとして機能できる ProxySQL などのサードパーティ ツールもあります。 上記の理由により、MySQL 8.0 ではクエリ キャッシュがサポートされなくなりました。5.7 から 8.0 にアップグレードする場合は、クエリ リライトまたはその他のキャッシュの使用を検討してください。 全文は以上です。 以上がMySQLがQuery Cacheをキャンセルした理由の詳細です。MySQL Query Cacheの詳細については、123WORDPRESS.COMの他の関連記事にも注目してください。 以下もご興味があるかもしれません:
|
>>: Web インタビュー Vue カスタム コンポーネントと呼び出しメソッド
非同期レプリケーションMySQL レプリケーションは、デフォルトでは非同期です。マスター スレーブ ...
目次1. ツールの紹介2. ワークフロー3. 操作インターフェースとパラメータ設定(1)監視と再起動...
背景Dockerでは、同じイメージを使用して4つのコンテナを作成します。ネットワークはブリッジモード...
効果確認アドレス:ツアープラン(uplanok.com) コード: img{幅: 100%;境界線の...
HTML はタグと属性で構成されており、これらを組み合わせてブラウザにページの表示方法を指示します。...
この記事の例では、日付と時刻の選択を実装するための uniapp の具体的なコードを参考までに共有し...
この記事の例では、ログインと登録機能を実装するためのjsの具体的なコードを参考までに共有しています。...
目次1. 実行コンテキストとは何か2. 実行コンテキスト スタックとは何ですか? 3. 実行コンテキ...
jsはクリックとドロップの特殊効果を実現します。まずは効果画像を見てみましょうさっそく始めましょう。...
mysqlのリモートアクセス権を有効にするデフォルトでは、MySQL ユーザーにはリモート アクセス...
Nginx の共有メモリは、高いパフォーマンスを実現できる主な理由の 1 つであり、主にファイル キ...
特殊記号名前付きエンティティ10進数エンコード特殊記号名前付きエンティティ10進数エンコードアルファ...
1.コンテナ内の /etc/hosts、/etc/resolv.conf、/etc/hostname...
1. ダウンロード公式サイトからmysql-5.7.19-linux-glibc2.12-x86_6...
DPlayer.jsビデオプレーヤープラグインは使いやすい主な用途: ビデオの再生、監視の開始、終了...