0

MySQL データベースを最適化しようとしています。私は約 90 個のテーブルを持っていますが、そのほとんどはほとんど使用されていません。私のウェブサイトを運営する大部分の作業を行っているのは、わずか 10 人程度です。

MySQL ステータス統計は、2.5 日間で約 200 万件のクエリを示し、1.7k の "Opened_tables" を報告しています (Open_tables 256 を使用)。table_cache を 32 から 256 に設定しました。

開いているテーブルのほとんどは、異なる接続からの同じテーブルの複数のインスタンスか、いくつかの一時テーブルのいずれかであると思います。

同じ期間に、19.1k の「Created_tmp_tables」と、5.7k のさらに厄介な Created_tmp_disk_tables が報告されます。max_heap_table_size と tmp_table_size の両方を 128M に設定しています。

インデックスと結合をできる限り最適化しようとしましたが、ディスクの使用を避けるためにテーブル内の BLOB フィールドと TEXT フィールドを避けようとしました。

物事を改善するために何か提案できることはありますか?

4

1 に答える 1

0

まず第一に、これらの内部統計に基づいて、MySQL データベースのパフォーマンスが悪いと結論付けないでください。tmp テーブルに問題はありません。実際、順序付けまたは集計を含むクエリでは、それらを作成する必要があります。

これは、2 速で費やした時間を分析した後で車両を修理しようとするようなものです。tmp テーブルを生成しているクエリは実質的に 1% 未満です。それはいいです。この数は十分に少ないため、これらのクエリは本番用ではなく、バックアップまたは何らかのメンテナンス操作用である可能性があります。

パフォーマンスに問題がある場合は、特定のクエリの動作が遅すぎたり、Web アプリの特定のページが遅かったりすることが原因であることがわかります。問題のあるクエリを特定できますか? 役立つスロークエリログがあります。

http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html

RAM が十分にある場合は、tmp_table_size を増やしてみてください。数メガバイトまで上げて、状況が改善するかどうかを確認してみませんか? しかし、それらはおそらく目立って変化することはありません。

于 2013-05-10T11:42:13.960 に答える