Entries

UNIQUE KEYとPRIMARY KEY

処理時間の増加に関してです。


詳細は以下から...

5000件ほどデータが入ったテーブルを5分起きに全件UPDATEしていたんですけど、たかが5000件をUPDATEするのに10秒以上かかっていました。他に特に重い処理をしていないのにもかかわらずこのスコアは明らかに何かがおかしい。


しかも、それを決定付けるものが見つかりました。そうです。毎回UPDATEにかかる時間が増加していたんです。ちなみに、UPDATEをするプログラム自体はcronで5分起きに起動させています。プロセスもきちんと切れているみたいで、メモリの増加も見られません。なので、プログラム的な何かが溜まって・・・ということは無いだろうと自分の中で調べていると、テーブル定義で不必要な部分を発見しました。


■UPDATE対象のテーブル定義


timestamp NOT NULL TIMESTAMP
user_id INTEGER NOT NULL AUTO_INCREMENT
last_date NOT NULL TIMESTAMP

UNIQUE KEY `unique_index_1` (`timestamp`, `user_id`);


大体こんな感じです。


>UNIQUE KEY `unique_index_1` (`timestamp`, `user_id`);
ここが直感的におかしいと思ったので、
PRIMARY KEY (`user_id`)
と言う風に修正しました。


すると、処理時間の増加も起きなくなり、大体1s〜2sの間でUPDATE処理を終えています。


結果として、解決はされましたが、原因に関してはDBのことに関しては詳しく知らないのでなんとも言えません^^;


どなたか、DBのスペシャリストの方がいましたら教えていただけるととてもありがたいです。

■関連してるかも
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://pgmemo.blog116.fc2.com/tb.php/22-0bd15b2d

0件のトラックバック

0件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

Appendix

最近の記事

ブロとも申請フォーム

この人とブロともになる

ブログ内検索


By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ

Amazonで検索



JAVA関連の書籍