MyISAMメトリックに関する MySQL Tuner 結果のセクションを貼り付けています。
[OK] Currently running supported MySQL version 5.5.57-0ubuntu0.14.04.1-log
[OK] Operating on 64-bit architecture
-------- Performance Metrics -----------------------------------------------------
[--] Up for: 25d 1h 40m 20s (6M q [3.149 qps], 170K conn, TX: 15G, RX: 1G)
[--] Reads / Writes: 90% / 10%
-------- MyISAM Metrics ----------------------------------------------------------
[!!] Key buffer used: 20.1% (80M used / 402M cache)
[OK] Key buffer size / total MyISAM indexes: 384.0M/31.6M
[OK] Read Key buffer hit rate: 99.9% (7M cached / 4K reads)
[!!] Write Key buffer hit rate: 1.2% (2M cached / 25K writes)
書き込みキーバッファーのヒット率を改善または最適化する方法を探しています。それともなぜそんなに悪いのですか?
この結果でどのサーバー変数が役割を果たす可能性があるのかわかりません。ここに貼り付ける必要のある変数や、具体的な詳細が必要な場合はお知らせください。
手伝ってくれてありがとう!
@RolandoMySQLDBAからの推奨に基づいてさらにいくつかのテストを行いましたが、このメトリックについて心配する必要はないようです。 key_buffer_size
を下げた後、書き込みバッファのキーヒット率が直接向上しました。ただし、読み取り速度の向上は測定できませんでした。キャッシュのための十分なメモリがなかったため、ほぼすべての書き込みが完了したためと考えられます。 書き込みバッファのキーヒット率の良い点と悪い点はまだよくわかりませんが、キーの最適なサイズに関連しているようですデータベースのデータとインデックスに基づくバッファ。
まだMyISAMを使用していますか???痛い!!!
冗談はさておき、2つのステータス変数が必要です。
比率 Key_writes / Key_write_requests を可能な限り1(100%)に近づけたい。このような比率を確認するために実行できるクエリのニースセットを作成しました。あなたはそれを私のJun 17, 2013
投稿への回答 MyISAMキーバッファー
おそらくFLUSH TABLES;
は、インデックスの変更が残っているものをすべてクリアします。システムが大量の書き込みを行わない場合は、おそらくこれで十分です。
データベースがクラッシュに耐えられるように、すべてのものをInnoDBに変換することをお勧めします。結局のところ、インデックスの変更を残しておく必要はありません。
InnoDB配管をざっと見てみましょう(Percona CTO Vadim Tkachenkoの写真)
左側のInnoDBバッファープールを参照してください。インデックスの変更を担当する挿入セクションがあります。 InnoDBは自動的にインデックスの変更をフラッシュします。 MyISAMにはそのようなメカニズムはありません。そのため、できるだけ早くInnoDBに変換してください。
MyISAMの使用を続ける必要がある場合は、専用MyISAMキーキャッシュの使用を検討する必要があります。 MyISAMテーブルの特定のセットのキーバッファーを作成できます。あなたのケースでは、FULLTEXTインデックスを持つ1つのテーブル専用のキーキャッシュを作成します。キャッシュを作成するサイズまたはサイズを判断する必要があります。
FULLTEXTインデックスを含むテーブルがmydb.myfull
。
次に、これを実行して、最も近いMBに切り上げられた適切なサイズを見つけることができます
SELECT index_length,((FLOOR(index_length / 1048576) + 1) * 1048576) index_length_rounded
FROM information_schema.tables WHERE table_schema='mydb' and table_name='myfull';
index_length_rounded
は使用するサイズです。
検索してください 専用MyISAMキーキャッシュの作成方法に関する私の投稿 。
INSERTとUPDATEは非常にまれにしか見えないので、あまり心配する必要はありません。
はい、ヒット率は低いです。しかし、物事を全体的に見てみましょう... 25日間で25Kの書き込みは取るに足りない(<1 /分)ので、心配は最小限です。 5K /分が問題になります。
パフォーマンスの問題が発生している場合は、最も遅いクエリを見つけて調査します(インデックス、定式化など)。
「キーバッファー」は、1つしかないMyISAMテーブルに適用されます。InnoDB統計は表示されません。
詳細については、 http://mysql.rjweb.org/doc.php/mysql_analysis を参照してください。