日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Mysql 会导致锁表的语法

發布時間:2024/1/23 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql 会导致锁表的语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://blog.csdn.net/lifaming15/article/details/47904557
最近再找一些MySQL鎖表原因,整理出來一部分sql語句會鎖表的,方便查閱,整理的不是很全,都是工作中碰到的,會持續更新
筆者能力有限,如果有不正確的,或者不到位的地方,還請大家指出來,方便你我,方便大家。
此測試環境
mysql 5.5 基于innodb 引擎

[sql] view plaincopy
insert into table1 values select … from table2 ….

此種方法,會鎖table2
[sql] view plaincopy
delete table1 from table1 inner join table2 on table1.id=table2.id …

此種方法,會鎖table2
[sql] view plaincopy
update tabel1,table2 set table1.name=’feie’ where table1.id=table2.id

此種方法,會鎖table2
[sql] view plaincopy
update tabel1,table2 set table1.name=’feie’ where table1.id=table2.id and table1.id=1;

此種方法,會鎖table2.id=1的記錄
—————————————–第二次編輯分割線————————————–
假設kid
是表table 的 一個索引字段 且值不唯一

1.如果kid 有多個值為12的記錄那么:

update table set name=’feie’ where kid=12;

會鎖表

2.如果kid有唯一的值為1的記錄那么:

update table set name=’feie’ where kid=1;

不會鎖

總結:用索引字段做為條件進行修改時, 是否表鎖的取決于這個索引字段能否確定記錄唯一,當索引值對應記錄不唯一,會進行鎖表,相反則行鎖。
如果有兩個delete
kid1 與 kid2是索引字段

語句1 delete from table where kid1=1 and kid2=2;

語句2 delete from table where kid1=1 and kid2=3;

這樣的兩個delete 是不會鎖表的

語句1 delete from table where kid1=1 and kid2=2;

語句2 delete from table where kid1=1 ;

這樣的兩個delete 會鎖表

總結:同一個表,如果進行刪除操作時,盡量讓刪除條件統一,否則會相互影響造成鎖表

總結

以上是生活随笔為你收集整理的Mysql 会导致锁表的语法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。