setautocommit=0;mysql>select*frominnodb_test;+------+-------------+|id|name|+------+-------------+|1|woshiceshi||2|woshice" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

mysql行鎖和表鎖

系統 2487 0

?

在調用存儲過程中,就會涉及到表鎖,行鎖這一概念:所謂區別:有索引的時候就是行鎖,沒有索引的時候就是表索。

innodb 的行鎖是在有索引的情況下,沒有索引的表是鎖定全表的.

表鎖演示(無索引)

Session1:

mysql> set autocommit=0;

mysql> select * from innodb_test;
+------+-------------+
| id?? | name??????? |
+------+-------------+
|??? 1 | woshiceshi? |?
|??? 2 | woshiceshi2 |?
|??? 3 | woshiceshi3 |?
+------+-------------+

mysql> select * from innodb_test where id = 2 for update;
+------+------------+
| id?? | name?????? |
+------+------------+
|??? 2 | woshiceshi2 |?
+------+------------+

Session2:

mysql> update innodb_test set name='sjis' where id = 1 ;
處于等待狀態....

再回到session1 commit以后,session2就出來結果了(鎖定了8秒,過了8秒左右才去session1提交)。

mysql> update innodb_test set name='sjis' where id = 1 ;
Query OK, 1 row affected (8.11 sec)
Rows matched: 1? Changed: 1? Warnings: 0

實驗結果是:我在session1的for update 操作看似只鎖定ID為2的行其實鎖定了全表,以至于后面session2的對ID為1的行update 需要等待Session1鎖的釋放。

行鎖演示(索引為ID)

Session1:
mysql> alter table innodb_test add index idx_id(id);
Query OK, 4 rows affected (0.01 sec)
Records: 4? Duplicates: 0? Warnings: 0

mysql> select * from innodb_test where id = 2 for update;
+------+------------+
| id?? | name?????? |
+------+------------+
|??? 2 | woshiceshi2 |?
+------+------------+

Session2:

mysql> update innodb_test set name='wohaishiceshi' where id = 1 ;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1? Changed: 1? Warnings: 0
mysql> select * from innodb_test where id = 1;???????????
+------+---------------+
| id?? | name????????? |
+------+---------------+
|??? 1 | wohaishiceshi |?
+------+---------------+
1 row in set (0.00 sec)

實驗結果:這次的鎖定是鎖定的行,所以沒有被鎖定的行(ID不為2的行)可以進行update..

http://keshion.iteye.com/category/125242

mysql行鎖和表鎖


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 乌鲁木齐市| 江都市| 吴堡县| 原阳县| 怀远县| 甘孜县| 富平县| 淮滨县| 温州市| 通辽市| 措勤县| 盐亭县| 鸡东县| 玛沁县| 新余市| 景谷| 古田县| 陵川县| 古丈县| 西乡县| 嵊州市| 黄石市| 柯坪县| 文水县| 彰武县| 邵阳市| 蒲江县| 云南省| 宜兰县| 溧阳市| 海门市| 抚顺市| 杭州市| 长宁区| 建宁县| 宁南县| 定安县| 龙泉市| 榕江县| 马鞍山市| 金堂县|