MySQLの更新ステートメントのロック

更新rent_contacts SET Contacts_mobile = '11111' WHERE rent_unit_code in(SELECT rent_unit_code FROM rent_unit);

最初のケース:インデックスのない状態

SQL実行:

ベギン;

UPDATE連絡先SET mobile = '11111' WHEREコード((3424342 ')内);

sql二执行UPDATE連絡先SET mobile = '11111' WHERE code in( '1111');

SQL 2の実行がブロックされ、SQL 1のコミット後、SQL 2を正常に実行できる

結論:インデックスのない状態、テーブルのロック

2番目のケース:条件にインデックスがあり、inステートメントが特定の値である

SQL実行:

ベギン;

UPDATE連絡先SET mobile = '11111' WHEREコード((3424342 ')内);

sql二执行UPDATE連絡先SET mobile = '11111' WHERE code in( '1111');

SQL 2は通常どおり実行され、SQL 2はSQL 1のコミットに依存しません

結論:条件にインデックスがあり、行がロックされています

3番目のケース:条件にインデックスがあり、inステートメントが複雑なクエリである

SQL実行:

ベギン;

UPDATE連絡先SET mobile = '11111'のWHEREコード入力(ユーザーからのコードの選択、id = 1)。

sql二执行UPDATE連絡先SET mobile = '11111' WHERE code in( '1111');

SQL 2の実行はブロックされ、SQL 1のコミット、SQL 2の通常の実行

結論:条件にはインデックスがあり、inステートメントは不確定値であり、ロックテーブル

転載:https://www.cnblogs.com/2nao/p/9965208.html

オリジナルの記事を公開 Like1 Visits 38

おすすめ

転載: blog.csdn.net/qq_37523371/article/details/105215691