[環境]
OS:CentOS
⇒メモリ:4G
⇒CPU:2コア(種類はわかりませんでした)
DB:MySQL5.1.52
クライアント:Flex
サーバー:php, Apache
お世話になっております。
とあるSQL文を実行すると、1秒で結果が返ってくる時と、
20秒近く結果が返ってこない時があり、
原因が何なのか分からず質問させていただきました。
=以下詳細=
40万件と30万件レコードが存在する2つのテーブルを結合し、
結果を表示しているプログラムがあります。
この実行結果で、1秒で結果が返ってくる時と、
20秒近く結果が返ってこない時があります。
※全く同じ条件で検索しています。
※急にデータ量が増えたのではありません。
20秒近く結果が返ってこなくなる時間はだいたい30分くらいです。
30分過ぎると、1秒で結果が返ってくるようになります。
20秒近く結果が返ってこない時間帯になると、
他のプログラムのSQL文にタイムアウトが発生します。
基本的には1秒で結果が返ってきていますので、INDEXは正しく設定されていると思います。
同じ条件のSQL文で処理時間が違う原因として、考えられることはございますでしょうか?
どなたかお分かりになる方いらっしゃいましたら、
ご教示いただければと思います。
よろしくお願い致します。
No.4ベストアンサー
- 回答日時:
MySQLはQuery Cacheを持っているのでテーブルの更新がない場合、同じクエリがリクエストされた場合は高速に結果を返すことができます。
しかし、テーブルの更新があるとキャッシュが効かなくなります。また、SQLの書き方によってはバッファキャッシュの競合が発生し遅延することも考えられます。
速い時間帯と遅い時間帯で
show processlist;
で接続数を確認してください。
また、CPUやI/Oの待ちを調べるためにはsarやiostatを用います。
http://www.uetyi.mydns.jp/wordpress/linux-server …
ご回答ありがとうございます。
今回の問題なのですが、調査するだけの
時間がなかったということもあり、
SQL及びテーブル構成の修正という対応を
とることになりました。
せっかくご回答くださってもらって申し訳ないのですが、
これにてクローズとさせていただきます。
他ご回答くださった方々もありがとうございました。
次回こういった問題が発生した際には、参考にさせていただきたいと思います。
No.3
- 回答日時:
なんとも言えませんがキャッシュの問題じゃないですか?
explainで有効なインデックスが設定されているか確認しながら
チューニングするしかないと思いますよ
No.2
- 回答日時:
DBサーバ上で処理されている、DBMS以外の処理内容(負荷状況)が気になります。
DBサーバ資源の負荷(cpuや、I/O[Disk]等)は、処理時間が短い時、長い時とで
どのようになっていますか?
この回答への補足
すみません。訂正です。
お礼欄の
>全体のメモリ使用率は
>また、現時点でのmysqldのメモリ使用量はおよそ28%程のままで、
>上下しておりません。
の箇所の、書きかけのところですが、
>全体のメモリ使用量は、4G中およそ3Gになります。
>また、現時点でのmysqldのメモリ使用量はおよそ28%程のままで、
>上下しておりません。
です。
ご回答頂きまして、ありがとうございます。
今まさに遅い時間帯で、MySQL以外にタスクは動いていません。
CPUですが、SQL実行時にmysqldのCPU使用率が100%になります。
このSQLが実行し終わると、全体のCPU使用率も1%前後まで下がります。
全体のメモリ使用率は
また、現時点でのmysqldのメモリ使用量はおよそ28%程のままで、
上下しておりません。
↓実際のtopコマンドで取得した内容
top - 16:30:56 up 12:52, 2 users, load average: 0.09, 0.12, 0.08
Tasks: 75 total, 1 running, 74 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 4044540k total, 3299440k used, 745100k free, 190332k buffers
Swap: 4095992k total, 0k used, 4095992k free, 1818508k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ OMMAND
2963 mysql 15 0 1921m 1.1g 5656 S 3.0 28.6 25:14.87 mysqld
I/Oに関してましては、ちょっと確認方法がわからなかったため
現在調査中です。
よろしくお願い致します。
No.1
- 回答日時:
クエリの結果を、バックグラウンドで30分かけて、中間ファイルに作っているのでは?
一旦、中間ファイルが出来てしまえばそれを使うので1秒で結果が返って来るけど、中間ファイルが出来る前にやると中間ファイルを利用出来ないので20秒かかる、と考えれば、つじつまが合います。
ご回答頂きまして、ありがとうございます。
大変申し訳ないのですが、「中間ファイル」とは
どういったものを差すのでしょうか。
キャッシュやテンポラリとは違うものなのでしょうか。
調べ方が悪いのかもしれませんが、それらしきサイトにたどり着きませんでした・・・。
お手数ですがよろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
メモのコツを教えてください!
メモを取るのが苦手です。 急いでメモすると内容がごちゃごちゃになってしまったり、ひどいときには全く読めない時もあります。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
単純なselectが遅くなるのですが、理由がサッパリわかりません
PostgreSQL
-
キャッシュを使わずにSELECTを投げたい
Oracle
-
1回目の実行に3分、2回目の実行に3秒のSQLで1回目を早くする方法ありますか?
MySQL
-
-
4
同じSQL文で速度がだいぶ違う
MySQL
-
5
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
6
Viewにインデックスは張れますか?
Oracle
-
7
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
8
バッチファイルで昨日の日付を取得
その他(プログラミング・Web制作)
-
9
単一グループのグループ関数ではありません。
Oracle
-
10
実行計画の「COST」と「BYTE」について教えていただきたいです。
Oracle
-
11
長期間使っていると更新処理速度が落ちるのはなぜ
PostgreSQL
-
12
インデックス作成後アナライズは必要か?
Oracle
-
13
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
14
アナライズとインデックス作成どちらが先か?
Oracle
-
15
selectした結果の余計な余白を取るにはどうしたらよいのでしょうか
Oracle
-
16
テーブルからのselectにおいてデータの有無により結果をわけたい
PostgreSQL
-
17
VIEWに対してWHERE句をつける
MySQL
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
Access2010でアクセス制限をしたい
-
同じSQL文で極端に検索が遅くな...
-
batでsqlplusによる前月データ...
-
DBファイルの中身を直接見れな...
-
sqlファイルを分割するソフトは...
-
ODBCを使用する場合のファイルD...
-
あるDBから別のDBのテーブルをs...
-
sql*loader 数値のロード
-
MySQLで連続csvファイルを読み...
-
PL/SQLで@ファイル名が反応しま...
-
PL/SQLをWindowsのBATファイル...
-
mySQLのデータベースにhtmlのコ...
-
create databaseがうまくいきま...
-
sqlite3でcsvのインポートがで...
-
SQLServerのselect文でデータ数...
-
Mysqlのデータベースのリンク
-
メンテナンスプランについて
-
リストアするとファイルが消える
-
MySQL Date型にNULLが設定でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースファイル(.db)を開...
-
同じSQL文で極端に検索が遅くな...
-
DBファイルの中身を直接見れな...
-
badファイルの内容を知る方法
-
DB2の文字化け
-
SQLServer2005 セカンダリファ...
-
Access2010でアクセス制限をしたい
-
アクセスの共有
-
accdbファイルの最適化
-
batでsqlplusによる前月データ...
-
mysql.sockを消してしまった
-
ODBCを使用する場合のファイルD...
-
dbfファイル
-
ダンプファイルから特定のテー...
-
SQLServer2005のネットワークド...
-
Linuxの.sqlをwindowsに置く
-
SQL*Loaderで桁数チェック
-
mysqlhotcopyで作成したファイ...
-
sqlファイルを分割するソフトは...
-
htmlフォームから受け取ったフ...
おすすめ情報