MySQL數據庫——鎖-表級鎖(表鎖、元數據鎖、意向鎖)

目錄

介紹

表鎖

語法

特點

元數據鎖

介紹

演示

意向鎖?

介紹

分類

演示?


介紹

表級鎖,每次操作鎖住整張表。鎖定粒度大,發生鎖沖突的概率最高,并發度最低。應用在MyISAM、InnoDB、BDB等存儲引擎中。

對于表級鎖,主要分為以下三類:

  • 表鎖
  • 元數據鎖(meta data lock,MDL)
  • 意向鎖

表鎖

對于表鎖,分為兩類:

  • 表共享讀鎖(read lock)
  • 表獨占寫鎖(write lock)

語法

  • 加鎖:lock tables 表名... read/write。
  • 釋放鎖:unlock tables / 客戶端斷開連接 。

特點

A.讀鎖

左側為客戶端一,對指定表加了讀鎖,不會影響右側客戶端二的讀,但是會阻塞右側客戶端的寫。

測試:

?

B.寫鎖?

?左側為客戶端一,對指定表加了寫鎖,會阻塞右側客戶端的讀和寫。

測試:

結論:
讀鎖不會阻塞其他客戶端的讀,但是會阻塞寫。
寫鎖既會阻塞其他客戶端的讀,又會阻塞其他客戶端的寫。

元數據鎖

介紹

meta data lock , 元數據鎖,簡寫MDL。
MDL加鎖過程是系統自動控制,無需顯式使用,在訪問一張表的時候會自動加上。MDL鎖主要作用是維護表元數據的數據一致性,在表上有活動事務的時候,不可以對元數據進行寫入操作。

為了避免DML與DDL沖突,保證讀寫的正確性。這里的元數據,可以簡單理解為就是一張表的表結構。 也就是說,某一張表涉及到未提交的事務時,是不能夠修改這張表的表結構的。

在MySQL5.5中引入了MDL,當對一張表進行增刪改查的時候,加MDL讀鎖(共享)

當對表結構進行變更操作的時候,加MDL寫鎖(排他)

常見的SQL操作時,所添加的元數據鎖:

對應SQL鎖類型說明
lock tables xxx read / write
SHARED_READ_ONLY / SHARED_NO_READ_WRITE
select select ... lock in share mode
SHARED_READ
SHARED_READ、 SHARED_WRITE兼容,與EXCLUSIVE互斥
insert 、update、delete、select ... for updateSHARED_WRITE與SHARED_READ、SHARED_WRITE兼容,與EXCLUSIVE互斥
alter table ...
EXCLUSIVE
與其他的 MDL 都互斥

演示

當執行SELECT、INSERT、UPDATE、DELETE等語句時,添加的是元數據共享鎖(SHARED_READ /SHARED_WRITE),之間是兼容的。?

當執行SELECT語句時,添加的是元數據共享鎖(SHARED_READ),會阻塞元數據排他鎖(EXCLUSIVE),之間是互斥的。?

?我們可以通過下面的SQL,來查看數據庫中的元數據鎖的情況:

select object_type,object_schema,object_name,lock_type,lock_duration from
performance_schema.metadata_locks ;

我們在操作過程中,可以通過上述的SQL語句,來查看元數據鎖的加鎖情況。

意向鎖?

介紹

為了避免DML在執行時,加的行鎖與表鎖的沖突,在InnoDB中引入了意向鎖,使得表鎖不用檢查每行數據是否加鎖,使用意向鎖來減少表鎖的檢查。

假如沒有意向鎖,客戶端一對表加了行鎖后,客戶端二如何給表加表鎖呢,來通過示意圖簡單分析一下:

首先客戶端一,開啟一個事務,然后執行DML操作,在執行DML語句時,會對涉及到的行加鎖。

當客戶端二,想對這張表加表鎖時,會檢查當前表是否有對應的行鎖,如果沒有,則添加表鎖,此時就會從第一行數據,檢查到最后一行數據,效率較低。?

有了意向鎖之后,?

客戶端一,在執行DML操作時,會對涉及的行加行鎖,同時也會對該表加上意向鎖。

而其他客戶端,在對這張表加表鎖的時候,會根據該表上所加的意向鎖來判定是否可以成功加表鎖,而不用逐行判斷行鎖情況了。


分類

  • 意向共享鎖(IS): 由語句select ... lock in share mode添加 。 與 表鎖共享鎖(read)兼容,與表鎖排他鎖(write)互斥。
  • 意向排他鎖(IX): 由insert、update、delete、select...for update添加 。與表鎖共享鎖(read)及排他鎖(write)都互斥,意向鎖之間不會互斥。
一旦事務提交了,意向共享鎖、意向排他鎖,都會自動釋放。

可以通過以下SQL,查看意向鎖及行鎖的加鎖情況:

select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from
performance_schema.data_locks;

演示?

A. 意向共享鎖與表讀鎖是兼容的

B. 意向排他鎖與表讀鎖、寫鎖都是互斥的?

?


END?


學習自:黑馬程序員——MySQL數據庫課程

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

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

相關文章

選擇排序和堆排序

目錄 前言 一.選擇排序 1.思想 2.實現 3.特點 二.堆排序 1.思想 2.實現 3.特點 前言 排序算法是計算機科學中的基礎工具之一,對于數據處理和算法設計有著深遠的影響。了解不同排序算法的特性和適用場景,能夠幫助程序員在特定情況下…

【Go】基于GoFiber從零開始搭建一個GoWeb后臺管理系統(一)搭建項目

前言 最近兩個月一直在忙公司的項目,上班時間經常高強度寫代碼,下班了只想躺著,沒心思再學習、做自己的項目了。最近這幾天輕松一點了,終于有時間 摸魚了 做自己的事了,所以到現在我總算是搭起來一個比較完整的后臺管…

nrfutil工具安裝

準備工作,下載相關安裝包 鏈接:https://pan.baidu.com/s/1LWxhibf8LiP_Cq3sw0kALQ 提取碼:2dlc 解壓后,分別安裝以下安裝包 在C盤下創建目錄nordic_tools,并將nrfutil復制到剛創建的目錄下 環境變量path下添加C:\nor…

圖像采集卡 Xtium?2-XGV PX8支持高速 GigE Vision 工業相機

圖像采集卡(Image Capture Card),又稱圖像捕捉卡,是一種可以獲取數字化視頻圖像信息,并將其存儲和播放出來的硬件設備。很多圖像采集卡能在捕捉視頻信息的同時獲得伴音,使音頻部分和視頻部分在數字化時同步…

python elasticsearch 日期聚合

索引以及數據如下 PUT dateagg {"mappings": {"properties": {"charge":{"type": "double"},"types":{"type": "keyword"},"create_date":{"type": "date",&…

裸機單片機適用的軟件架構

單片機通常分為三種工作模式,分別是 1、前后臺順序執行法 2、操作系統 3、時間片輪詢法 1、前后臺順序執行法 利用單片機的中斷進行前后臺切換,然后進行任務順序執行,但其實在…

Spring Boot Web

目錄 一. 概述 二. Spring Boot Web 1.2.1 創建SpringBoot工程(需要聯網) 1.2.2 定義請求處理類 1.2.3 運行測試 1.3 Web分析 三. Http協議 3.1 HTTP-概述 剛才提到HTTP協議是規定了請求和響應數據的格式,那具體的格式是什么呢? 3…

spring結合設計模式之策略模式

策略模式基本概念: 一個接口或者抽象類,里面兩個方法(一個方法匹配類型,一個可替換的邏輯實現方法)不同策略的差異化實現(就是說,不同策略的實現類) 使用策略模式替換判斷,使代碼更加優雅。 …

Swagger快速上手

快速開始&#xff1a; 導入maven包 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version> </dependency><dependency><groupId>io.springfox<…

MongoDB在Windows系統和Linux系統中實現自動定時備份

本文主要介紹MongoDB在Windows系統和Linux系統中如何實現自動定時備份。 目錄 MongoDB在Windows系統中實現自動定時備份MongoDB在Linux系統中實現自動定時備份備份步驟備份恢復 MongoDB在Windows系統中實現自動定時備份 要在Windows系統中實現自動定時備份MongoDB數據庫&#…

區塊鏈實驗室(32) - 下載arm64的Prysm

Prysm是Ethereum的共識層。 1. 下載prysm.sh curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod x prysm.sh2. 下載x86版prysm共識客戶端 ./prysm.sh beacon-chain --download-only3.下載arm64版prysm共識客…

刪除當前目錄及其子目錄下的重復文件

言歸正傳&#xff0c;直接看代碼 public class RemoveDuplicateFiles {public static void main(String[] args) throws IOException {String directoryPath "D:\\dir";List<File> allFiles getAllFiles(directoryPath);removeDuplicateFile(allFiles);}pri…

HP108w打印機出現Direct.....無線網,連接不上

本人用手機打印的&#xff0c;安卓 這種情況我也不知道為啥出現&#xff0c;如果出現上面的情況&#xff0c;可以 一直按住&#xff0c;會發藍光的&#xff0c;無線信號樣子的按鈕&#xff0c;持續按20s&#xff0c;松手后觀察自己的wifi列表&#xff0c;本人出現了&#xff…

Linux——web網站服務(一)

一、安裝httpd服務器Apache網站服務 1、準備工作 為了避免發送端口沖突&#xff0c;程序沖突等現象&#xff0c;卸載使用rpm方式安裝的httpd #使用命令檢查是否下載了httpd [rootserver ~]# rpm -qa httpd #如果有則使用 [rootserver ~]# rpm -e httpd --nodeps Apache的配置…

抖音小店經營規則解析:避免被扣分的關鍵因素

抖音小店是一個受歡迎的電商平臺&#xff0c;為創業者提供了良好的銷售和推廣機會。為了確保在抖音小店的運營中不會被扣分或出現其他問題&#xff0c;不若與眾整理了幾個關鍵的規則需要注意和遵守。 1. 產品合規性&#xff1a; 抖音小店要求所有銷售的產品必須合法合規&#x…

欣賞動態之美,不如欣賞C語言實現動態內存管理之美 ! ! !

本篇會加入個人的所謂‘魚式瘋言’ ??????魚式瘋言:??????此瘋言非彼瘋言 而是理解過并總結出來通俗易懂的大白話, 我會盡可能的在每個概念后插入魚式瘋言,幫助大家理解的. 可能說的不是那么嚴謹.但小編初心是能讓更多人能接受我們這個概念 &#xff01;&#xff0…

ubuntu解決問題:E: Unable to locate package manpages-posix-dev

sudo apt-get install manpages-posix-dev 想要在ubuntu里面安裝manpages-posix-dev這個包&#xff0c;發現彈出錯誤 E: Unable to locate package manpages-posix-dev 解決方法如下&#xff1a; 1 查看當前ubuntu的版本 abhishekitsfoss:~$ lsb_release -a No LSB module…

python自動化測試實戰 —— WebDriver API的使用

軟件測試專欄 感興趣可看&#xff1a;軟件測試專欄 自動化測試學習部分源碼 python自動化測試相關知識&#xff1a; 【如何學習Python自動化測試】—— 自動化測試環境搭建 【如何學習python自動化測試】—— 瀏覽器驅動的安裝 以及 如何更…

河南省專業技術人員職稱評審之繼續教育

&#xff08;一&#xff09;職稱評審時會遇到一個關于繼續教育學時是否足夠的問題&#xff0c;作為新人很容易一頭霧水&#xff0c;這里以河南省為例&#xff0c;先在管理系統 http://manage.hnzjgl.gov.cn 注冊&#xff0c;根據自己單位選擇&#xff0c;有些高校雖然在地方而不…

力扣題:數字與字符串間轉換-12.12

力扣題-12.12 [力扣刷題攻略] Re&#xff1a;從零開始的力扣刷題生活 力扣題1&#xff1a;539. 最小時間差 解題思想&#xff1a;將字符串的時間形式換成數字形式的時間&#xff0c;然后計算差值即可&#xff0c;最重要的是最小的值加上一天的時間加入到數組最后&#xff08…