1.MYSQLサイトの記事で、「更新を遅延して 1 行で多数の更新を後から行うことです。」
とありますが、これはどういうことでしょうか。
具体例または、ソースコードが載っているようなサイトをご教示ください。
2.大量データをUPDATEする際に、速度を上げるような注意点などをご教示ください。
※抜粋
-----------------------------------------------------------------
更新クエリは、SELECT クエリと同様に最適化されますが、書き込みオーバヘッドが加算されます。
書き込みの速度は更新対象のデータのサイズおよび更新対象のインデックス数によって異なります。
変更がないインデックスは更新されません。
更新の速度を上げるもう1つの方法は、「更新を遅延して 1 行で多数の更新を後から行うことです。」
1 行での多数の更新は、テーブルをロックすると同時に行う場合と比較して大幅に高速に実行できます。
参考ページ
http://dev.mysql.com/doc/refman/4.1/ja/update-speed.html
-----------------------------------------------------------------
他のトランザクションなどとテーブルを共用し、select ~ for update + update を、行ロックやページロックなどをしながら行うより、参照系の時間帯と更新系の時間帯を分けるなどして、一括して更新する方が性能的には良いということです。
インデクスがあれば、さらにデータ部だけでなく、インデクス部にも更新が影響します。
varchar、textなど、長大なデータは、物理的には複数のレコードに格納して管理されます。長大なデータを更新すると、複数レコードに影響があります。その結果、ロックの範囲が拡大し、他のトランザクションの同時実行性に影響が出る場合があります。
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | chuken_kenkou | 722回 | 671回 | 54回 | 2009-02-25 11:28:02 |
ありがとうございます。
そういうことでしたか。