【MySQL】MySQL中鎖有哪些?

一、按照粒度分類:

粒度越小,并發度越高,鎖開銷越大。

1.全局鎖:

  • 作用: 鎖定整個MySQL實例(所有數據庫)。
  • 適用場景: 全庫邏輯部分。(確保備份期間數據的一致性。)
  • 實現方式: 通過 FLUSH TABLES WITH READ LOCK (FTWRL) 命令實現,加鎖后所有表變為只讀,更新、刪除、插入等操作會被阻塞。
  • 注意:InnoDB可通過 mysqldump --single-transaction 結合事務隔離級別避免使用全局鎖(利用MVCC實現一致性讀)。

2.表級鎖:

作用: 鎖定整個表,粒度較大,并發度低,但鎖開銷較小。

  • 適用場景: MyISAM存儲引擎默認鎖機制(InnoDB也支持,但更常用行鎖),適合讀多寫少的場景。

  • 類型:

    • 表讀鎖: 多個事務可以加讀鎖,允許讀表,但阻塞寫操作(包括加寫鎖)。
    • 表寫鎖: 一個事務加鎖后,獨占表阻塞其他所有讀鎖和寫鎖。
  • 特點: MyISAM寫鎖優先級高于讀鎖,可能導致讀請求餓死(一直等待寫鎖釋放)。

3.行級鎖:

  • 作用: 鎖定單行記錄,粒度最小,并發度最高,鎖開銷最大。
  • 適用場景: InnoDB存儲引擎的核心鎖機制,適合寫操作頻繁的場景(如電商訂單、庫存更新)。
  • 類型:
    • 行讀鎖: 事務對某行加讀鎖后,其他事務可以加讀鎖,但不能加寫鎖。
    • 行寫鎖: 事務對某行加鎖后,其他事務不能加讀鎖或寫鎖。
  • 特點:InnoDB的行鎖基于索引實現,若查詢未命中索引,會升級為表鎖。

二、按鎖的功能劃分:

1.共享鎖(Shared Lock,S鎖):

  • 又稱: 讀鎖。
  • 特性: 多個事務可以同時持有同一資源的S鎖,允許讀操作,但阻塞寫操作(X鎖)。
  • 加鎖方式:SELECT ... LOCK IN SHARE MODE (InnoDB 中,顯式加讀鎖)。

2.排他鎖(Exclusive Lock X鎖):

  • 又稱寫鎖。
  • 特性:一個事務持有X鎖后,其他事務不能持有該資源的S鎖或X鎖,獨占資源用于寫操作。
  • 加鎖方式SELECT ... FOR UPDATE;(InnoDB 中,顯式加寫鎖);默認情況下,UPDATE/DELETE/INSERT 會自動加 X 鎖。

三、InnoDB特有的鎖(基于事務和索引):

1.意向鎖:

  • 作用: 表級鎖,用于標識”事務稍后會對表中的行加S鎖或X鎖“,避免表鎖與行鎖的沖突檢查效率問題。
  • 類型:
    • 意向共享鎖(Intention Shared Lock IS鎖): 事務計劃對表中的某些行加S鎖,加行S鎖前需要先加IS鎖。
    • 意向排他鎖(IX鎖): 事務計劃對表中的某些行加X鎖,加行X鎖前需要先加IX鎖。

2.記錄鎖:

  • 作用: 鎖定索引記錄本身(具體某一行),防止其他事務修改或刪除該記錄。
  • 示例: WHERE id=10 id是主鍵,InnoDB會鎖定id=10的這一行。

3.間隙鎖:

  • 作用:鎖定索引記錄之間的"間隙",不包括記錄本身,防止其他事務在間隙中插入新紀錄。(解決"幻讀"問題)。
  • 適用場景:InnoDB的RR隔離級別(默認級別)。
  • 示例:表中id=5、10,WHERE id BETWEEN 5 AND 10 ,會鎖定(5,10)之間的間隙,阻止插入id=6、7等記錄。

4.臨建鎖:

  • 作用記錄鎖+間隙鎖的組合,鎖定索引記錄以及前面的間隙(左開右閉),是InnoDB RR級別下默認的行鎖方式。
  • 示例:表中id=5、10,WHERE id=10會鎖定 (5,10] 區間。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91710.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91710.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91710.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

語義分割--deeplabV3+

根據論文網絡結構圖講一下:網絡分為兩部分:encoder和decoder部分。 Encoder:DCNN就是主干網絡,例如resnet,Xception,MobileNet這些(主干網絡也要使用空洞卷積),對dcnn的結…

Azure DevOps 中的代理

必知詞匯 深入研究 Azure DevOps 中的代理之前需要掌握的基本概念: 代理:Azure DevOps 中的代理是一個軟件組件,負責執行流水線中的任務和作業。這可能包括數據中心內的物理服務器、本地或云端托管的虛擬機,甚至是容器化環境。這些代理可以在各種操作系統和環境中運行,例如…

AUTOSAR進階圖解==>AUTOSAR_SRS_ADCDriver

AUTOSAR ADC驅動詳解 基于AUTOSAR標準的ADC驅動模塊需求規范分析目錄 ADC驅動模塊概述 關鍵概念定義 ADC驅動架構 ADC驅動在AUTOSAR分層架構中的位置ADC驅動的主要職責 ADC驅動配置結構 通用配置(AdcGeneral)硬件單元配置(AdcHwUnit)通道配置(AdcChannel)通道組配置(AdcChanne…

寶馬集團與SAP聯合打造生產物流數字化新標桿

在德國雷根斯堡的寶馬工廠,每57秒就有一輛新車下線。這座工廠不僅是汽車制造的基地,更是寶馬集團向SAP S/4HANA云平臺轉型的先鋒項目。通過“RISE with SAP”計劃,寶馬將該工廠的運營系統全面遷移至SAP S/4HANA Cloud Private Edition&#x…

Go 語言實戰:構建一個高性能的 MySQL + Redis 應用

引言:為什么是 Go MySQL Redis?在現代后端技術棧中,Go MySQL Redis 的組合堪稱“黃金搭檔”,被廣泛應用于各種高并發業務場景。Go 語言:以其卓越的并發性能、簡潔的語法和高效的執行效率,成為構建高性能…

Excel超級處理器,多個word表格模板中內容提取到Excel表格中

在職場中,很多人習慣在word里插入表格,設計模板,填寫內容,一旦有多個word文件需要整理在excel表格中,最常見的工作方式就是每個word文件打開,復制,粘貼到excel表格里,這樣的工作方式…

前端工程化:ES6特性

本文為個人學習筆記整理,僅供交流參考,非專業教學資料,內容請自行甄別 文章目錄一、let與var1.1、越獄問題1.2、變量的重復聲明1.3、變量提升問題二、解構2.1、數組解構2.2、對象解構2.3、方法解構三、鏈判斷四、參數默認值五、箭頭函數六、模…

大屏項目展示

一、項目克隆與基礎操作 我們參考的項目 互聯網設備可視化平臺---IofTV-Screen: ??一個基于 vue、datav、Echart 框架的物聯網可視化(大屏展示)模板,提供數據動態刷新渲染、屏幕適應、數據滾動配置,內部圖表自由替換、Mixins注入等功能,持續更新.... 將次項目克隆到本…

基于R語言地理加權回歸、主成份分析、判別分析等空間異質性數據分析實踐技術應用

在自然和社會科學領域有大量與地理或空間有關的數據,這一類數據一般具有嚴重的空間異質性,而通常的統計學方法并不能處理空間異質性,因而對此類型的數據無能為力。以地理加權回歸為基礎的一系列方法:經典地理加權回歸,…

【Flask 基礎 ①】 | 路由、參數與模板渲染

0 序言 Flask 是 Python 生態中一款輕量級 Web 框架,以簡潔、靈活著稱。 學習 Flask 的意義在于: 快速開發:通過少量代碼即可搭建功能完整的 Web 應用;理解原理:其設計清晰體現了 Web 框架的核心邏輯,如路由…

wordpress登陸前登陸后顯示不同的頂部菜單

在WordPress中讓“未登錄”和“已登錄”用戶看到不同的頂部菜單,最干凈、最安全、最可維護的做法是: 在同一個菜單位置(themelocation)里,根據is_user_logged_in()動態切換菜單。 下面給出三種常見實現方式,按推薦程度排序。任選…

【昇騰推理PaddleOCR】生產級部署方式

已知的在昇騰上推理Paddle OCR有三種方法: 概要: PyTorch官方提供了昇騰插件包,安裝后雖然可以支持PytorchOCR和PaddlePaddle的推理任務,但性能較低。換句話說,PaddlePaddle框架層面支持了昇騰,但具體到某個…

LangChain摘要記憶組件的使用與解析

01. 摘要記憶組件的類型 在 LangChain 中使用緩沖記憶組件要不就保存所有信息(占用過多容量),要不就保留最近的記憶信息(丟失太多重要信息),那么有沒有一種情況是既要又要呢? 所以折中方案就出…

NAT與智能選路

1、NAT 基礎概念核心作用:私網地址無法在 Internet 上直接使用和分配,NAT 通過將私有地址與公有地址及端口進行轉換,實現私網與公網的通信。轉換示例:內網用戶(10.1.1.1)訪問外網 FTP Server(12…

【05】VisionMaster入門到精通——圓查找

文章目錄1 運行參數先檢測出多個邊緣點然后擬合成圓形,可用于圓的定位與測量 1 運行參數 先檢測出多個邊緣點然后擬合成圓形,可用于圓的定位與測量——運行參數 扇環半徑——圓環ROI的內外圓半經; 邊綠類型 最強——只檢測掃描范圍內梯度最…

p5.js 用 beginGeometry () 和 endGeometry () 打造自定義 3D 模型

點贊 關注 收藏 學會了 在 p5.js 的 3D 繪圖中,這兩個函數是一對 “黃金搭檔”: beginGeometry():像一個 “3D 模型的開關”,調用它之后,你畫的所有簡單 3D 形狀(比如球體、圓錐)都會被 “…

(9)NMPC非線性模型預測控制及機械臂ROS控制器實現

前言 本篇介紹Nonlinear Model Predictive Control,非線性模型預測控制,MPC是一種現代先進的控制方法,而NMPC特指對非線性模型的控制,其核心思想是在每個控制周期內利用系統的非線性模型及損失函數,預測未來一段時間內…

達夢數據庫備份與還原終極指南:從基礎到增量策略實戰

第一部分:備份與還原核心原理 一、備份還原本質解析數據存儲機制 數據存儲在物理文件頁中(最小單位4K-32K)有效數據頁 文件描述頁 已分配使用頁日志優先原則:操作先寫REDO日志再更新數據文件三大核心操作操作作用關鍵特性備份復…

設計模式篇:在前端,我們如何“重構”觀察者、策略和裝飾器模式

設計模式篇:在前端,我們如何“重構”觀察者、策略和裝飾器模式 引子:代碼里“似曾相識”的場景 作為開發者,我們總會遇到一些“似曾相識”的場景: “當這個數據變化時,我需要通知其他好幾個地方都更新一…

Node.js 服務可以實現哪些功能

以下是 Node.js 服務可以實現的 100 個功能,涵蓋 Web 開發、工具鏈、系統集成、自動化等方向,按類別分類整理:一、Web 開發相關 RESTful API 服務GraphQL 服務實時聊天應用(WebSocket/Socket.IO)博客/CMS 系統電子商務…