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

Mysql查詢時如何使用for update行鎖還是表鎖

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

測試表

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');

測試1

用主鍵查詢時是行鎖

窗口1查詢id=1時,窗口2查詢id=2時可以查詢,查詢id=1時會卡在那等待窗口1完成事務。

步驟1

窗口1提交事務,窗口2就可以查出id=1的結果了

步驟2

測試2

使用索引查詢時也是行鎖,鎖的是查到的行

當窗口1根據(jù)username索引查詢到id=1和2的結果時,窗口2查詢id=3時可以查詢,查詢id=1和2時會卡住,等待窗口1的事務完成。

步驟1

當窗口1提交或回滾事務時,窗口2卡住的查詢就出現(xiàn)結果了。

步驟2

測試3

當索引失效或者是不使用索引時:鎖的是表

索引失效

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

索引失效步驟1

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

索引失效步驟2

不使用索引

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

不使用索引查詢步驟1

不使用索引步驟2

結論

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

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

相關文章

  • MySQL調(diào)優(yōu)之SQL查詢深度分頁問題

    MySQL調(diào)優(yōu)之SQL查詢深度分頁問題

    本文主要介紹了MySQL調(diào)優(yōu)之SQL查詢深度分頁問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • hive從mysql導入數(shù)據(jù)量變多的解決方案

    hive從mysql導入數(shù)據(jù)量變多的解決方案

    這篇文章主要介紹了hive從mysql導入數(shù)據(jù)量變多的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • MySQL 四種連接和多表查詢詳解

    MySQL 四種連接和多表查詢詳解

    這篇文章主要介紹了MySQL多表查詢,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • MySQL主從庫過濾復制配置教程

    MySQL主從庫過濾復制配置教程

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

    Mysql如何設置表主鍵id從1開始遞增

    這篇文章主要介紹了Mysql如何設置表主鍵id從1開始遞增問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    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ù)庫的操作過程,包括安裝部署和配置備份管理員的相關知識,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • 開啟mysql的binlog日志步驟詳解

    開啟mysql的binlog日志步驟詳解

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

    MySQL 5.7開啟并查看biglog的詳細教程

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

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

    這篇文章主要介紹了MySQL指定IP登錄配置方法的相關資料,包括設置指定IP授權、修改用戶IP、配置防火墻限制、加強my.cnf安全及連接驗證等步驟,需要的朋友可以參考下
    2025-07-07

最新評論

庆云县| 祁门县| 平舆县| 元氏县| 原阳县| 伊川县| 白山市| 山阳县| 德阳市| 兴安盟| 当涂县| 沐川县| 孝昌县| 深泽县| 扬州市| 宜都市| 三穗县| 横山县| 鲁甸县| 澜沧| 佛冈县| 乡宁县| 武平县| 镇安县| 隆林| 深州市| 舟曲县| 正定县| 都兰县| 江永县| 潢川县| 会昌县| 金秀| 南丹县| 巴彦县| 阜城县| 洞口县| 寻乌县| 丰宁| 南乐县| 府谷县|