人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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


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

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

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

●質問者: webuser
●カテゴリ:ウェブ制作
✍キーワード:MySQL SELECT インデックス オーバ クエリ
○ 状態 :終了
└ 回答数 : 1/2件

▽最新の回答へ

1 ● chuken_kenkou
●60ポイント

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

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

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

◎質問者からの返答

ありがとうございます。

そういうことでしたか。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ