mysql 8 innodbでデータベースキャッシュをクリアする方法
P粉571233520
2023-08-27 23:46:28
<p>同じ mysql 8 データベースとテーブルに対して同じクエリを複数回実行してみました。 </p>
<p>クエリやテーブル自体を調整することでパフォーマンスが向上するかどうかを判断するために実験を行う必要があります。ただし、最初の試行後は、データがキャッシュされているため、応答時間が大幅に速くなりました。 </p>
<pre class="brush:php;toolbar:false;">mysql 8 innodb</pre>
<p>データを最初から取得するにはキャッシュをクリアするにはどのようなオプションが必要ですか。 </p>
<p>以前に提案された回答はすべて mysql 8 ではなく、mysql 5 に関連しているようです。ほとんどのコマンドは現在非推奨になっているようです。 </p>
<p>サーバーを再起動せずに MySQL クエリ キャッシュをクリアします</p>
クエリが本番環境で頻繁に実行されるものである場合、目標は舞台裏にあると思います。クエリを 2 回実行し、2 番目のクエリのタイミングを使用することをお勧めします。この方法では、本番環境で表示されるものに近づきます。データはすでにキャッシュにあります。
(ビルは、「クエリ キャッシュ」は無関係で、「バッファ プール」が関係すると説明しました。)
これは、時間の経過による変化を確認するのに十分な大きさのテーブルを構築することなくクエリをテストするために私が好むテクニックです:
リーリーこれらの数値は、データまたはインデックス行の実際の読み取り/書き込み数です。この数値は、出力行数、テーブル内の行数などのように見える場合があります。これにより、たとえば、テーブル全体 (またはインデックス) のスキャンがあるかどうかがわかります。ゼロ以外の「Handler_write%」値は、一時テーブルが必要であることを示します。
ご使用のバージョンで利用可能な場合は、「
EXPLAIN ANALYZE
」も参照してください。その他のヒント:インデックスレシピ
リンク先の質問はクエリ キャッシュに関するものですが、MySQL 8.0 では削除されているため、もうクリアする必要はありません。
あなたの文言は、クエリ キャッシュとは異なるバッファ プールについて質問していることを示しています。バッファ プールはデータとインデックス ページをキャッシュし、クエリ キャッシュ (存在する場合) はクエリ結果をキャッシュします。
MySQL サーバーを再起動せずにバッファー プールをクリアするコマンドはありません。ページは、他のページによって削除されるまでバッファ プールにキャッシュされたままになります。
バッファ プールは RAM に配置されているため、MySQL サーバー プロセスが再起動されると、その内容はクリアされます。したがって、最初から開始する場合は、プロセスを再起動する必要があります (オペレーティング システム全体を再起動する必要はなく、MySQL サービスを再起動するだけです)。
MySQL 8.0 では、再起動時にバッファ プールの内容が完全にクリアされないことに注意してください。バッファ プールの内容の一部はシャットダウン中に保存され、起動時に自動的に再ロードされます。この機能はデフォルトで有効になっていますが、無効にすることもできます。
これについて詳しくはこちらをご覧ください: