mysql 併發 鎖表 mysql 併發插入鎖表

2021-10-19 18:28:00 字數 1184 閱讀 3678

執行過程如下

set autocommit = 0

session a :insert into bpm_pro_status values (「」1″」, 「」1″」, 「」usertask1″」, 「」使用者任務1″」, 「」-1″」, 「」2015-11-12 00:00:00″」, 「」test1:1:10000000490026″」, 「」0″」);

結果:[sql]insert into bpm_pro_status values (「」1″」, 「」1″」, 「」usertask1″」, 「」使用者任務1″」, 「」-1″」, 「」2015-11-12 00:00:00″」, 「」test1:1:10000000490026″」, 「」0″」);

受影響的行: 1

session b: insert into bpm_pro_status values (「」2″」, 「」2″」, 「」usertask1″」, 「」使用者任務1″」, 「」-1″」, 「」2015-11-12 00:00:00″」, 「」test1:1:10000000490026″」, 「」0″」);

結果:[sql]insert into bpm_pro_status values (「」1″」, 「」1″」, 「」usertask1″」, 「」使用者任務1″」, 「」-1″」, 「」2015-11-12 00:00:00″」, 「」test1:1:10000000490026″」, 「」0″」);

[err] 1205 – lock wait timeout exceeded; try restarting transaction

沒有commit;  sessiona居然鎖表了。 表引擎 innodb

這是什麼情況呢?請高手指點。

事物隔離級別  repeatable-read

解決方案:8分

不是鎖表,只是鎖住了那條1的記錄,原因是你第乙個沒有提交。沒有提交,當然b插入的時候,就會鎖住。

另外,你的表有主鍵,假如第乙個commit了,那麼b插入相同的資料,就會報錯。

解決方案:6分

在repeatable-read級別下,應該是不會發生表鎖的,innodb是行鎖。除非是操作同一行。

你是什麼版本?還有其他操作嗎?show 下表看看

解決方案:12分

兩個可能,1,f欄位選擇性低,沒用到索引,所以鎖了全表。2,next lock的原因,更新的字段裡有新插入的相同值,這樣是不允許插入的。

mysql併發讀寫 mysql 的讀寫鎖與併發控制

1.無論何時只要有多個查詢在同一時刻修改資料,都會產生併發控制的問題 2.討論mysql在兩個層面,伺服器層和儲存引擎層,如何併發控制讀寫 3.舉了個mbox郵箱檔案的例子,說如果有多個程序同時對mbox檔案寫東西,那麼在檔案的末尾會,交叉混亂的新增,比如程序1寫了幾行,程序2也寫了幾行,互相交叉,...

MySQL併發 共享鎖目的 mysql併發與鎖機制

在innodb中,鎖是逐步獲得的,因此發生死鎖是可能的。發生死鎖後,innodb一般都能自動檢測到,並使乙個事務釋放鎖並回退,另外乙個事務獲得鎖,並繼續完成事務。但在涉及外部鎖,或涉及表鎖的情況下,innodb並不能完全自動檢測到死鎖,這需要通過設定鎖等待超時引數innodb lock wait t...

mysql 併發 mysql 的讀寫鎖與併發控制

1.無論何時只要有多個查詢在同一時刻修改資料,都會產生併發控制的問題 2.討論mysql在兩個層面,伺服器層和儲存引擎層,如何併發控制讀寫 3.舉了個mbox郵箱檔案的例子,說如果有多個程序同時對mbox檔案寫東西,那麼在檔案的末尾會,交叉混亂的新增,比如程序1寫了幾行,程序2也寫了幾行,互相交叉,...