5

最近、RDS データベースに問題が発生しました。約 15 ~ 20 分おきに、データベースが 1 ~ 2 分間応答しなくなります。応答しない間、空きディスク容量の GB が使用され、その後回復されます。説明が難しいので、監視グラフのスクリーンショットを添付しました。これは 1 時間分です。何が起こっているのか、どこから見始めればよいのか、誰にもわかりませんか?

監視データのスクリーンショット

4

1 に答える 1

7

ディスクスペースの使用率により、ディスク上の一時テーブルで並べ替えるクエリ結果セットが非常に大きいと思います。Created_tmp_disk_tables確認するには、スパイクが発生したときにカウンターステータス変数の増加を探します。

mysql> show global status like 'Created%';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| Created_tmp_disk_tables | 56    | <-- this is probably the culprit
| Created_tmp_files       | 23    |
| Created_tmp_tables      | 3177  |
+-------------------------+-------+

そうである場合、メモリに収まらないほど大きな一時テーブルが発生し、ディスクにスプールする必要があるクエリがある可能性があります。残念ながら、これらの一時的な結果セットの大きさを知ることはできませんが、15GiBのオーダーだと思います。

どのクエリが巨大な一時テーブルを生成しているかを把握し、これらのクエリを最適化するようにしてください。残念ながら、ストックMySQLにはこれを追跡するための適切なログ情報がありません。また、Amazon RDSでは、ストックMySQLをMySQLの拡張フォーク(Percona Serverなど)に置き換えることはできません。クエリログ。

そのため、開発環境に移動してSQLクエリのコードレビューを行い、EXPLAINを1つずつ実行して、ボトルネックがどれであるかを特定する必要があります。

于 2011-07-13T01:27:13.713 に答える