ライブMySQL 5.5データベースサーバーでは、手動クエリの実行、実行中のクエリの確認、何が行われているのかなどを確認するためにMySQL Workbenchを使用しています。
今日、 "Server Status"タブに "Queries per Second"と "InnoDB Writes per Second"が非常に多いことに気付きました、まだ「クライアント接続」のリストを表示するタブでは、実行中のすべてのクエリが表示されますが、クエリはほとんど表示されていません。おそらく数秒ごとに2または3です。
ここで私は何を誤解していますか? 2つのタブがまったく合わない。
編集-SHOW ENGINE INNODB STATUS;
の出力は次のとおりです
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
2 read views open inside InnoDB
Main thread process no. 24494, id 139631733794560, state: sleeping
Number of rows inserted 36474186, updated 163927609, deleted 11892445, read 1747097889216
1.06 inserts/s, 13.91 updates/s, 0.00 deletes/s, 33615.95 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================
InnoDBストレージエンジンのより良い視覚的表現が必要です。
監視できる書き込みをトリガーするものについて考えてください
書き込み操作の数
InnoDBで書き込まれたバイト
これらは、InnoDBの内外で変更されているものの1つです。しかし、これがすべてではありません。ステータス変数の MySQLドキュメント を確認してください。
私の推測では、MySQL Workbenchは Innodb_data_writes を監視しているだけです。
データの書き込みが多い場合、これが与えられます
1.06 inserts/s, 13.91 updates/s, 0.00 deletes/s
これは1秒あたり約15クエリですが、InnoDBのチューニングにある程度の時間を費やす必要がある場合があります。 InnoDBはファジーチェックポイントイン gを実行するので、InnoDBは、永続的な書き込みが減ることがないことを確認すると、書き込みのボトルネックを明らかにします。 OSまたはVMが原因である可能性があります 。また、InnoDBバッファープールが小さすぎることが原因である可能性もあります(100%使用されているようです)。読み取りが多いと、データとインデックスページがバッファプールに取り込まれます。 INSERTおよびUPDATEからの新規または更新されたデータおよびインデックスページも、バッファープールに押し込む必要があります。おそらく、より大きなバッファプールが必要です。
別の角度から、アクセスされた行の数を見てください
36474186 Rows from INSERTs
163927609 Rows from UPDATEs
11892445 Rows from DELETEs
212294240 Rows Written
1747097889216 from SELECTs
1747097889216を212294240で除算すると、更新するすべての行について、読み取られているのは8229.6行になります。これは、すべてのINSERT、UPDATE、またはDELETEの2245.46(33165.95/14.97)SELECTと連動しています。書き込みがバッファプールに詰め込まれているのがわかります。これにより、バッファプール、ログバッファ、およびREDOログをすべて増やす必要があると感じます。
SHOW PROCESSLISTは、急いでいる場合に使用するものです。 Rolandoは、実行されているDML(データ変更言語)クエリとそれらが変更しているものを決定するための優れた post を作成しました。
SELECTに関しては、SHOW PROCESSLISTが最善の策、またはGUIで何かを探している場合は Jet Profiler です。
InnoDB Engine を直接クエリして、SHOW ENGINE INNODB STATUSで現在動作しているものに関する詳細情報を取得することもできます。
Workbenchがクエリ/秒の値を計算する方法を正確に知らなければ、SHOW PROCESSLISTとSHOW ENGINE INNODB STATUSの出力とオペレーション/秒の計算を信頼する方が安全です。