MySQLで処理時間の長いクエリを実行すると・・・

PHP・MySQL
| | コメント(0) | トラックバック(0)
MySQLって軽快な動作で、検索が早いと評判ですがどうしてもレコード数の増加、並び替えの必要な場合など、処理によっては異常に処理時間が長くなることはないですか?
処理時間の長いクエリは、システムとしては欠陥クエリなんですけど、そこは置いておいて。

ORDER BY句で並び替えをした場合のSQL文をExplainで確認してみると、ExtraにUsing filesortという表示が出た場合の話です。
この表示が出た場合、SQLクエリの処理に時間がかかります。レコード数に比例して。
とあるシステムで、検索に失敗することがありました。
開発環境ではレコード数が少ないので異常はなかったのですが。
「Got error 28 from table handler」が表示されます。



調べてみると、MySQLのTEMPデータを格納するディスクの空き容量がありません。でした。ちなみにOSはWIndows系でCドライブにMySQLを格納、設定はデフォルトでした。
TEMPデータはCドライブに格納する設定なのですが、空き容量は5GB超あるので問題ないと思っていましたが、処理中のファイルサイズを監視してみると、5GBを超えていました。

とりあえず、My.cnfのTEMPフォルダの格納場所をDドライブに変更してSQLでの並び替えの一部をPHP側に回すことで解決しました。

SQL文のチューニングは奥が深いと感じた、トラブルでした。

【WEB開発】カテゴリ:


【WEB開発】トラックバック(0)

【WEB開発】このブログ記事を参照しているブログ一覧: MySQLで処理時間の長いクエリを実行すると・・・

【WEB開発】このブログ記事に対するトラックバックURL: http://web.creator-world.net/MT/mt-tb.cgi/38



【WEB開発】コメントする



カスタム検索

ioPLAZA【アイ・オー・データ直販サイト】 ioPLAZA【アイ・オー・データ直販サイト】
あれもこれも標準装備のレンタルサーバ あれもこれも標準装備のレンタルサーバ


Web広告限定ストア(eクーポン)Web広告限定ストア(eクーポン)

問い合わせ

メールフォーム