建表
create
table testdemo (
`id`
int(
255)
notnull
,`c1`
varchar
(300
)character
set utf8 collate utf8_general_ci null
default
null
,`c2`
int(50)
null
default
null
,primary
key(
`id`),
index
`idx_c2`
(`c2`
)using
btree
)engine
=innodb
;insert
into testdemo values(1
,'1',1
),(2
,'2',2
);
使用乙個會話開啟並執行乙個寫鎖
begin
select
*from testdemo where id =
1for
update
使用另乙個會話框,上乙個寫鎖
begin
select
*from testdemo where id =
1lock
inshare
mode
這時另乙個會話執行會超時。如果發生在生產環境,可能會覺得納悶,怎麼老是等待超時呢?這時可使用下面語句找到問題的原因
select
*from information_schema.innodb_locks;
這時發現同一張表有兩個鎖,乙個是讀鎖乙個是寫鎖
這時我們可以使用該語句找到程序號,並kill掉它就好
執行下面命令即可解鎖
kill
7
mysql 鎖等待表 MySQL表的鎖等待
今天線上業務遇到乙個問題,因為一張模擬自增序列的表被鎖住,涉及該錶的業務受到影響。線上情況 1 這個表只有乙個id欄位。今天線上業務遇到乙個問題,因為一張模擬自增序列的表被鎖住,涉及該錶的業務受到影響。線上情況 1 這個表只有乙個id欄位。2 id欄位為主鍵索引 3 該錶只有一行資料,記錄全域性最大...
mysql鎖問題嗎 mysql 鎖問題處理
錯誤資訊如下 time 140122 16 34 23 user host x thread id 19904440 schema x last errno 1205 killed 0 query time 200.911931 lock time 0.000041 rows sent 0 rows...
MySQL找出鎖等待
1.伺服器級別的鎖等待 可以通過show processlist看到等待鎖的執行緒id,但是無法知道究竟哪個執行緒持有鎖 可以通過mysqladmin debug 相關等待鎖的執行緒以及誰持有鎖可以在錯誤日誌中找到 2.儲存引擎層的鎖等待則比較麻煩,以下是innodb儲存引擎中鎖等待以及哪個執行緒持...