Mysql中有那些鎖

按照鎖的力度分:

1.行級鎖

2.表級鎖

3.全局鎖

4.頁級鎖

innodb不支持頁鎖

全局鎖

全局鎖指的是對整個數據庫實例加鎖,一般用于數據庫的

表級鎖

表鎖 是對整張表進行加鎖。

表級鎖還有以下幾種:

意向鎖:

意向鎖是指,我們在事務請求表/行的意向鎖的時候,我們會對整個表加上意向鎖。

意向鎖解決了一個問題:

就是我們一個事務對行加上鎖的時候,另一個事務對表加上鎖。這種情況似乎可以發生,但是事務已經對行上鎖了,另外的一個事務也可以訪問并操作該表內的所有行,這就發生沖突了。

意向共享鎖:

多個事務可以同時加上共享鎖,但是不能修改

意向排他鎖:

表級鎖,多個事務可以對該表上面的數據進行修改

AUTO-INC鎖

AUTO-INC 鎖是一種特殊的表級鎖,由插入帶有 AUTO_INCREMENT 列的表的事務獲取。在最簡單的情況下,如果一個事務正在向表中插入值,任何其他事務都必須等待,以便執行它們自己的插入操作,這樣第一個事務插入的行就會接收到連續的主鍵值。

字典鎖

字典鎖,英文名叫做MetaData Lock,也叫做MDL鎖,它是一種用于管理元數據的鎖機制,而不是數據本身的鎖。

MDL鎖用于控制對數據庫對象的元數據的并發訪問,數據庫會在執行DDL(Data Defination Language)操作時加上字典鎖。字典鎖的主要目的是保護數據庫中的元數據對象,如表、列、索引、視圖等,以確保在DDL操作期間,不會出現數據一致性問題和競爭條件。

表級排他&共享鎖

InnoDB中,一般我們會做的就是兩種操作,即DDL和DML。

DML中。我們日常的對數據庫表結構的SELECT、INSERT、UPDATE以及DELETE都不會添加表級別的共享鎖及排他鎖。而是使用默認的并發控制方式——行級鎖。

那除了增刪改查以外,還有一些其他的操作,比如ALTER、DROP等對表機構改變的動作,他們加鎖的過程添加的是MDL鎖,即字典鎖。

所以,**InnoDB中的表級鎖并不是沒用,而是因為他劃分的太細了,意向鎖、AUTO-INC鎖、字典鎖等。而剩下的普通的排他鎖和共享鎖,確認很少才能用得上。**我找了很多資料,也沒有明確的看到具體是啥時候,在《MySQL是怎樣運行的》這本書中提到過一句:比如在崩潰恢復時。

當然,我們可以自己通過SQL語句來添加表級鎖。可以使用 LOCK TABLES 手動添加表級鎖,但這會阻塞其他所有訪問該表的操作,直到執行 UNLOCK TABLES

LOCK TABLES還可以分為排他和共享:

LOCK TABLES table READ:這就是添加表級別的共享鎖

LOCK TABLES table WRITE:這就是添加表級別的排他鎖

還有就是,Innodb會在傾向于選擇行級鎖來進行并發控制,但是如果在一些極端情況下, 比如說UPDATE操作需要掃描整個表且對表中許多行進行更新,InnoDB可能會評估行級鎖的成本過高,而采用更粗粒度的鎖定策略,比如表級鎖。然而,這種情況在InnoDB中是非常罕見的,因為InnoDB設計上是傾向于盡可能地使用行級鎖。

擴展知識

update時沒有用到索引,加什么鎖?

相信大家看到過的很多資料中都有過類似的描述“innodb 的 update語句中,如果where條件中沒有索引,就不是行級鎖了,而是鎖表了,就是表級鎖”。

我一直也都有這個印象,最開始是從哪看來的,也無從考究了,確實很長一段時間都是這么認為的。但是我發現并不對。

確實,mysql的行級鎖鎖的是索引,但是當update語句的where條件中沒有用到索引的話,他會做全表掃描,但是也不是全部都鎖定。而是把符合條件的記錄鎖住。

鎖啥呢?鎖主鍵索引。沒有主鍵呢?會自動創建隱式主鍵鎖住。


以上部分知識來源于網絡

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

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

相關文章

基于 CoT 思維鏈協調多 MCP 工具:依托亞馬遜云科技服務打造全流程智能的 Amazon Redshift 運維體系

基于 CoT 思維鏈協調多 MCP 工具:依托亞馬遜云科技服務打造全流程智能的 Amazon Redshift 運維體系 新用戶可獲得高達 200 美元的服務抵扣金 亞馬遜云科技新用戶可以免費使用亞馬遜云科技免費套餐(Amazon Free Tier)。注冊即可獲得 100 美元的…

手機群控平臺的智能管控技術深度解析

手機群控平臺作為數字化運營的核心工具,正在重塑移動設備管理的技術邊界。其核心價值在于通過集中化控制實現批量化操作,同時借助智能化算法提升管控效率。本文將深入探討其技術架構與實現方案。平臺架構與核心技術手機群控平臺采用分布式架構設計&#…

Spring Boot 生命周期與核心擴展點全解析(含實操案例)

在Spring Boot開發中,理解應用的生命周期是實現優雅啟動、資源管理與故障處理的關鍵。不同于傳統Spring框架需要繁瑣的XML配置,Spring Boot通過自動配置簡化了開發流程,但其生命周期的底層邏輯仍延續并增強了Spring的核心機制。本文將從“生命周期階段劃分”“核心擴展點原理…

69-SQLite應用

1. SQLite操作 1.1了解數據庫1.2 操作數據庫步驟# -*- coding: utf-8 -*- """ Project : 01-python-learn File : 03_SQLite3添加數據.py IDE : PyCharm Author : 劉慶東 Date : 2025/9/15 14:05 """ # 1. 導入模塊 import sqlite3 …

Nginx - 正向vs反向代理

參考: https://blog.csdn.net/william_n/article/details/127387009 AI問答?? Nginx 正向代理 vs 反向代理詳解?? ??1. 正向代理(Forward Proxy)?? ??定義?? ??客戶端主動配置??的代理服務器,代表客戶端向外部服務器發送請…

裝飾器模式在Spring中的案例

設計模式-裝飾器模式 裝飾器模式所解決的問題是,在不改變原來方法代碼的情況下對方法進行修飾,從而豐富方法功能。 Spring架構中的裝飾器模式 在Spring架構中,以線程池進行舉例。 線程池 線程池是一個對線程集中管理的對象,集中管…

云原生與 AI 驅動下的數據工程新圖景——解讀 DZone 2025 數據工程趨勢報告【附報告下載】

在 AI 技術從“實驗性”走向“企業級落地”的關鍵階段,數據工程作為底層支撐的重要性愈發凸顯。近日,DZone 發布的《2025 數據工程趨勢報告》(Scaling Intelligence with the Modern Data Stack)通過對全球 123 位 IT 專業人士的調…

9.5 機器翻譯與數據集

語言模型是自然語言處理的關鍵,而機器翻譯是語言模型最成功的基準測試,因為機器翻譯正是將輸入序列轉換成輸出序列的序列轉換模型的核心問題。序列轉碼模型在各類現代人工智能應用中國呢發揮著至關重要的作用,因此我們將其作為本章剩余部分和…

Linux 內核鏡像與啟動組件全解析:從 vmlinux 到 extlinux.conf

🧠 Linux 內核鏡像與啟動組件全解析:從 vmlinux 到 extlinux.conf 在嵌入式 Linux 系統中,啟動流程涉及多個關鍵文件和機制。不同的鏡像格式和配置文件承擔著不同的職責,從內核編譯到 bootloader 加載,再到系統啟動。本…

【系統分析師】2024年下半年真題:論文及解題思路

更多內容請見: 備考系統分析師-專欄介紹和目錄 文章目錄 試題一:論devops在企業信息系統開發中的應用 試題二:論系統業務流程分析方法及應用 試題三:論軟件測試方法及應用 試題四:論信息系統運維管理 試題一:論devops在企業信息系統開發中的應用 1、概要敘述你參與管理和…

AI GEO 實戰:借百度文小言優化,讓企業名稱成搜索熱詞

在當今數字化浪潮中,企業的線上曝光度和搜索可見性至關重要。百度作為國內占據主導地位的搜索引擎,其推出的大模型文小言蘊含著巨大的潛力。通過巧妙運用 AI GEO(生成式引擎優化)策略,企業完全有可能讓自己的公司名稱成…

文件操作知識點總結

目錄 1.為什么使用文件 2.什么是文件? 2.1 程序文件 2.2 數據文件 2.3 文件名 3.二進制文件和文本文件 4.文件的打開和關閉 4.1 流和標準流 4.1.1 流 4.1.2 標準流 4.2 文件指針 4.3 文件的打開和關閉 4.3.1 fopen函數 4.3.2 fclose函數 5.文件的順序…

oracle認證有哪幾種?如何選擇

Oracle(甲骨文)不僅是全球領先的數據庫軟件巨頭,更是企業級數據管理的代名詞,獲得Oracle認證,證明可從事Oracle數據庫服務器的數據操作和管理等工作。下面給大家詳細其主要認證類型及其在職業發展中的含金量&#xff0…

AppTest邀請測試測試流程

相比AppGallery邀請測試,AppTest邀請測試具備以下全新能力:若您同時發布了多個測試版本,AppTest支持測試版本自動升級到最新的測試版本。您可以選擇將當前最新在架版本的應用介紹截圖展示給測試人員,視覺效果更好,提升…

硬件 - oring多電源切換

目錄 一、ORing電路 1.1 ORING 電路 1.2 ORING 電路關鍵部分 二、多電源切換 2.1 主要思路 2.2 適用場景 一、ORing電路 1.1 ORING 電路 中文常稱 “或環電路” 或 “并聯冗余電路”是一種電源并聯冗余拓撲結構 核心功能:將多路獨立電源的輸出 “并聯整合”&a…

Qt多語言翻譯實戰指南:常見陷阱與動態切換解決方案

問題背景 在Qt項目國際化過程中,開發者經常會遇到各種翻譯邏輯問題,特別是需要實現運行時語言動態切換功能時。一個典型場景是:程序默認英文顯示,加載中文翻譯文件后界面變為中文,但再次切換回英文時卻失敗。本文將深入…

機器人要增加力矩要有那些條件和增加什么

機器人要增加力矩要有那些條件和增加什么進行詳細講解 好的,這是一個非常專業且重要的問題。為機器人增加力矩(通常指提升關節輸出扭矩)不是一個簡單的部件替換,而是一個涉及動力鏈、結構、控制和散熱的系統性工程。 以下將詳細講…

spring集成aes加密、rsa加密

文章目錄spring集成對稱加密spring集成rsa加密spring集成對稱加密 encrypt:key: aaabbb # 只配置這個參數就實現了對稱加密salt: 333444 # 這個可以不配置spring集成rsa加密 例如apollo,如果沒有配置encrypt.key,那么apollo不配置應該也是可以的&#…

OpenSTL PredRNNv2 模型復現與自定義數據集訓練

OpenSTL PredRNNv2 模型復現與自定義數據集訓練 概述 本文將詳細介紹如何復現 OpenSTL 中的 PredRNNv2 模型,并使用自定義的 NPY 格式數據集進行訓練和預測。我們將從環境配置開始,逐步講解數據預處理、模型構建、訓練過程和預測實現,最終實現…

Linux內核IPv4隧道模式封裝機制剖析

概述 在Linux網絡棧中,XFRM(Transform)子系統負責實現IPsec等安全協議的功能。其中,xfrm4_mode_tunnel.c是實現IPv4隧道模式封裝的核心模塊,為IPv4數據包提供隧道模式的封裝和解封裝能力。本文將深入分析這一模塊的實現機制。 模塊架構與功能 該模塊通過注冊到XFRM框架…