最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql查詢時(shí)如何使用for update行鎖還是表鎖

 更新時(shí)間:2023年08月29日 10:21:03   作者:nacrt  
這篇文章主要介紹了Mysql查詢時(shí)如何使用for update行鎖還是表鎖問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

測(cè)試表

CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  KEY `u_name_uq` (`username`) USING BTREE
) ENGINE=InnoDB;
INSERT INTO `user`(`id`, `username`, `password`) VALUES (1, 'zhangsan', '123456');
INSERT INTO `user`(`id`, `username`, `password`) VALUES (2, 'zhangsi', 'abc456');
INSERT INTO `user`(`id`, `username`, `password`) VALUES (3, 'lisan', '123654');

測(cè)試1

用主鍵查詢時(shí)是行鎖

窗口1查詢id=1時(shí),窗口2查詢id=2時(shí)可以查詢,查詢id=1時(shí)會(huì)卡在那等待窗口1完成事務(wù)。

步驟1

窗口1提交事務(wù),窗口2就可以查出id=1的結(jié)果了

步驟2

測(cè)試2

使用索引查詢時(shí)也是行鎖,鎖的是查到的行

當(dāng)窗口1根據(jù)username索引查詢到id=1和2的結(jié)果時(shí),窗口2查詢id=3時(shí)可以查詢,查詢id=1和2時(shí)會(huì)卡住,等待窗口1的事務(wù)完成。

步驟1

當(dāng)窗口1提交或回滾事務(wù)時(shí),窗口2卡住的查詢就出現(xiàn)結(jié)果了。

步驟2

測(cè)試3

當(dāng)索引失效或者是不使用索引時(shí):鎖的是表

索引失效

當(dāng)使用like + %開頭的查詢時(shí)索引失效,窗口1查出id=1和3的數(shù)據(jù),窗口2查詢id=2的數(shù)據(jù)會(huì)卡住,說明整個(gè)表都被鎖了。

索引失效步驟1

窗口1完成事務(wù),窗口2出現(xiàn)結(jié)果:

索引失效步驟2

不使用索引

窗口1不適用任何索引查詢id=1的結(jié)果,窗口2查詢id=2的結(jié)果會(huì)卡住,說明還是表鎖

不使用索引查詢步驟1

不使用索引步驟2

結(jié)論

在開啟事務(wù)的情況下,查詢使用for update,如果使用了索引(主鍵)并且索引生效的情況下,鎖的是查到的行,否則是表鎖。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL主從庫過濾復(fù)制配置教程

    MySQL主從庫過濾復(fù)制配置教程

    搭建MySQL主從庫過濾復(fù)制,備份指定數(shù)據(jù)庫,有利于數(shù)據(jù)庫的管理,本文主要介紹了MySQL主從庫過濾復(fù)制配置教程,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Mysql如何設(shè)置表主鍵id從1開始遞增

    Mysql如何設(shè)置表主鍵id從1開始遞增

    這篇文章主要介紹了Mysql如何設(shè)置表主鍵id從1開始遞增問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • ERROR: Error in Log_event::read_log_event()

    ERROR: Error in Log_event::read_log_event()

    ERROR: Error in Log_event::read_log_event(): read error, data_len: 438, event_type: 2
    2014-02-02
  • MySQLBackup備份數(shù)據(jù)庫的操作過程

    MySQLBackup備份數(shù)據(jù)庫的操作過程

    這篇文章主要介紹了MySQLBackup備份數(shù)據(jù)庫的操作過程,包括安裝部署和配置備份管理員的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • 開啟mysql的binlog日志步驟詳解

    開啟mysql的binlog日志步驟詳解

    這篇文章主要介紹了MySQL?5.7版本中二進(jìn)制日志(bin_log)的配置和使用,文中通過圖文及代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • MySQL 5.7開啟并查看biglog的詳細(xì)教程

    MySQL 5.7開啟并查看biglog的詳細(xì)教程

    binlog 就是binary log,二進(jìn)制日志文件,這個(gè)文件記錄了MySQL所有的DML操作,通過binlog日志我們可以做數(shù)據(jù)恢復(fù),增量備份,主主復(fù)制和主從復(fù)制等等,本文給大家介紹了MySQL 5.7開啟并查看biglog的詳細(xì)教程,需要的朋友可以參考下
    2024-03-03
  • MySQL指定IP登錄配置方法的完整步驟

    MySQL指定IP登錄配置方法的完整步驟

    這篇文章主要介紹了MySQL指定IP登錄配置方法的相關(guān)資料,包括設(shè)置指定IP授權(quán)、修改用戶IP、配置防火墻限制、加強(qiáng)my.cnf安全及連接驗(yàn)證等步驟,需要的朋友可以參考下
    2025-07-07
  • 最新評(píng)論

    宁河县| 巴南区| 兰坪| 喀喇沁旗| 焦作市| 闻喜县| 昭苏县| 富川| 虹口区| 辽源市| 博罗县| 阳信县| 南召县| 沿河| 那坡县| 上蔡县| 商洛市| 沙湾县| 孟州市| 龙井市| 宣化县| 中西区| 渑池县| 英山县| 蒙自县| 和平县| 安吉县| 阿荣旗| 方山县| 乐都县| 竹溪县| 富源县| 阿城市| 都昌县| 会同县| 宾阳县| 平原县| 手游| 盖州市| 通渭县| 吉安县|