專案中遇到的MySql行鎖與併發性關係(1)
前些日子因為專案需要,研究下了為了併發,對錶加行鎖的問題:
首先如果想對錶加入行鎖需要該表有索引列,同時加行鎖的條件是用索引列做條件的;
所以建立一章帶主鍵的表TEST_ALR:
CREATE TABLE TEST_ALR
(
ID INT NOT NULL AUTO_INCREMENT,
NAME VARCHAR(30),
PRIMARY KEY (ID)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ;
然後在連線1中加事務和往表中插入資料:
SET autocommit=0;
INSERT INTO TEST_ALR (NAME) VALUES ('張三'),('李四'),('王五'),('趙六'),('孫七');
在當前連線中檢視資料:
SELECT * FROM TEST_ALR;
結果:
ID name
1 張三
2 李四
3 王五
4 趙六
5 孫七
此時同時在連線2,3,4中插入不同的資料:
連線2:
INSERT INTO TEST_ALR (ID) VALUES (1);
Error Code : 1205
Lock wait timeout exceeded; try restarting transaction
連線3:
INSERT INTO TEST_ALR (ID) VALUES (6);
1 row(s) affected
連線4:
INSERT INTO TEST_ALR (NAME) VALUES ('test');
1 row(s) affected
在連線4中查詢表TEST_ALR:
ID | NAME |
6 | NULL |
7 | test |
說明連線1中的INSERT雖然沒有提交,但是此時已經把ID在1-5範圍的5行資料加上行鎖了.
相關文章
- IT專案中的要素關係
- Gil全域性解釋鎖和執行緒互斥鎖的關係執行緒
- Java核心(三)併發中的執行緒同步與鎖Java執行緒
- Mysql的鎖機制與PHP檔案鎖處理高併發簡單思路MySqlPHP
- 《淺入淺出MySQL》表鎖 行鎖 併發插入MySql
- Java開發技巧——併發控制中的樂觀鎖與悲觀鎖Java
- MySQL全域性鎖、表鎖以及行鎖MySql
- MySQL InnoDB中的事務隔離級別和鎖的關係MySql
- IT產品管理與專案管理的關係(轉)專案管理
- 深入理解 MySQL—鎖、事務與併發控制MySql
- 深入理解Mysql——鎖、事務與併發控制MySql
- 多執行緒與併發----讀寫鎖執行緒
- 專案中遇到的bug
- 專案管理中各系統之間的關係專案管理
- 專案管理與實現企業發展的魚水關係(轉)專案管理
- MySQL如何加鎖控制併發MySql
- 專案管理軟體與IT業界專案經理人的關係(2)(轉)專案管理
- 專案管理軟體與IT業界專案經理人的關係(3)(轉)專案管理
- 併發程式設計系列之Lock鎖可重入性與公平性程式設計
- 併發使用者數與TPS之間的關係
- 多執行緒與併發-----Lock鎖技術執行緒
- 關於專案管理中的公共關係資源管理(轉)專案管理
- 併發與鎖的心得分享
- Java併發指南8:AQS中的公平鎖與非公平鎖,CondtionJavaAQS
- 23、Java併發性和多執行緒-重入鎖死Java執行緒
- jmeter 壓測中,執行緒組和併發數的關係,以及 loop 的含義JMeter執行緒OOP
- 高併發核心技術 - 冪等性 與 分散式鎖分散式
- 行高與字型的關係
- 【轉】QPS和併發數的關係
- 六西格瑪與專案管理有何關係?專案管理
- create 與 store中的關係
- asp.net 中 .ASPX 與.CS檔案的關係ASP.NET
- 安裝mysql中遇到的問題1MySql
- 一個關於wait/notify與鎖關係的探究AI
- Maven中如何管理多模組專案的依賴關係Maven
- 如何管理前端專案中的複雜依賴關係前端
- iOS專案開發實戰——UIView的層級關係iOSUIView
- Java併發指南1:併發基礎與Java多執行緒Java執行緒