MYSQL UPDATEについての質問です。


1.MYSQLサイトの記事で、「更新を遅延して 1 行で多数の更新を後から行うことです。」
とありますが、これはどういうことでしょうか。
具体例または、ソースコードが載っているようなサイトをご教示ください。

2.大量データをUPDATEする際に、速度を上げるような注意点などをご教示ください。


※抜粋
-----------------------------------------------------------------
更新クエリは、SELECT クエリと同様に最適化されますが、書き込みオーバヘッドが加算されます。
書き込みの速度は更新対象のデータのサイズおよび更新対象のインデックス数によって異なります。
変更がないインデックスは更新されません。

更新の速度を上げるもう1つの方法は、「更新を遅延して 1 行で多数の更新を後から行うことです。」
1 行での多数の更新は、テーブルをロックすると同時に行う場合と比較して大幅に高速に実行できます。

参考ページ
http://dev.mysql.com/doc/refman/4.1/ja/update-speed.html
-----------------------------------------------------------------

回答の条件
  • 1人5回まで
  • 登録:2009/02/24 17:58:09
  • 終了:2009/03/03 18:00:03

回答(2件)

id:chuken_kenkou No.1

chuken_kenkou回答回数722ベストアンサー獲得回数542009/02/24 20:39:21

ポイント60pt

他のトランザクションなどとテーブルを共用し、select ~ for update + update を、行ロックやページロックなどをしながら行うより、参照系の時間帯と更新系の時間帯を分けるなどして、一括して更新する方が性能的には良いということです。

インデクスがあれば、さらにデータ部だけでなく、インデクス部にも更新が影響します。

varchar、textなど、長大なデータは、物理的には複数のレコードに格納して管理されます。長大なデータを更新すると、複数レコードに影響があります。その結果、ロックの範囲が拡大し、他のトランザクションの同時実行性に影響が出る場合があります。

id:webuser

ありがとうございます。

そういうことでしたか。

2009/02/25 01:51:20

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 chuken_kenkou 722 671 54 2009-02-25 11:28:02

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません