試しにインデックス乗らない状態でdeleteしたらどうなるか試しに調べてみた
+----+-----------+---------------------+---------------------+ | id | name | created_at | updated_at | +----+-----------+---------------------+---------------------+ | 2 | masterka2 | 2020-12-13 18:19:01 | 2020-12-13 18:19:01 | | 3 | masterka | 2020-12-13 18:20:56 | 2020-12-13 18:20:56 | +----+-----------+---------------------+---------------------+
テスト1
インデックスが乗らないやつをdeleteしてみる
・端末1
start transaction delete from table_test created_at <= '2020-12-13 18:20:00';
・端末2
これはロックされる
update table_test set name="masterk3" where id=3;
テスト2
インデックスが乗るやつをdeleteしてみる
・端末1
start transaction delete from table_test id=2;
・端末2
これは行ロックになるので通る
update table_test set name="masterk3" where id=3;
テスト3
・端末1
試しに複雑なクエリを投げてみた
start transaction delete from table_test as a where a.id in (select id from (select id from table_test where created_at <= '2020-12-13 18:20:00') b);
・端末2
これはロックされる
update table_test set name="masterk3" where id=3;
テスト4
・端末1
試しに=で比較のクエリを投げてみた
start transaction delete from table_test where name="msaterka";
・端末2
これはロックされる
update table_test set name="masterka3" where id =3;
インデックスのらないとテーブルロックになっちゃうから・・・・
数秒で終わるようにしないとまずいなぁ