Soalan:
1 Apabila transaksi tidak didayakan dalam innodb dan autocommit=1, adakah akan mengemas kini dan memadamkan kunci jadual?
Saya membuka dua sesi mysql di terminal, dan jadual t mempunyai sejumlah 3.5 juta baris data
Dilaksanakan sendirian:
会话1:update t set status=1 where id>1; 16.*秒
会话2:update t set status=1 where id<3500000; 12.*秒
Dilaksanakan serentak, pemahaman saya:
**在我看来,这两条sql,同时执行,同时操作同一条记录的情况,只有一次**
**在innodb中update和delete都会隐式添加排它锁,那么就是说这两条sql同时执行,只会阻塞很短的时间,毕竟只有同时操作同一条记录的情况下,才会阻塞**
Dilaksanakan serentak, keputusan ujian:
两条sql,间隔执行时间,在半秒左右.
会话1先执行:update t set status=1 where id>1;16.*秒,没有变化
会话2后执行:update t set status=1 where id<3500000; 28.* = 12.*秒+16.*秒
会话2先执行:update t set status=1 where id>1;12.*秒,没有变化
会话1后执行:update t set status=1 where id<3500000; 28.* = 16.*秒+12.*秒
Mungkinkah apabila dua SQL beroperasi pada rekod yang sama pada masa yang sama, jadual dikunci? Pemahaman saya sepatutnya bahawa ia hanya akan menyekat untuk jangka masa yang singkat Lagipun, rekod yang sama hanya boleh dikendalikan pada masa yang sama Ia seperti dua orang, mengira dari 1 hingga 10, dan b mengira dari 10 hingga 1, tidak kira sama ada mereka berada pada kelajuan yang sama atau Ia bukan kelajuan yang sama, anda hanya boleh mengira nombor yang sama sekali pada masa yang sama
Sql ialah transaksi, yang tidak bermakna bahawa operasi rekod 1W bermakna transaksi 1W sql1 mengunci semua rekod >1, dan sql2 akan menunggu sql1 melepaskan kunci
.