MySQL進階——鎖

目錄

1全局鎖—一致性數據備份

1.1全局鎖介紹

1.2語法

1.3 一致性備份案例

1.4 全局鎖特點

2表級鎖

2.1表鎖

2.1.1共享讀鎖

2.1.2獨占寫鎖

2.2元數據鎖

2.3元數據鎖

MySQL中的鎖,按照鎖的粒度分,分為以下三類:

(1)全局鎖:鎖定數據庫中的所有表。

(2)表級鎖:每次操作鎖住整張表。

(3)行級鎖:每次操作鎖住對應的行數據。

1全局鎖—一致性數據備份

1.1全局鎖介紹

全局鎖就是對整個數據庫實例加鎖,加鎖后整個實例就處于只讀狀態,后續的DML的寫語句,DDL語句,已經更新操作的事務提交語句都將被阻塞。

其典型的使用場景是做全庫的邏輯備份,對所有的表進行鎖定,從而獲取一致性視圖,保證數據的完整性

對數據庫進行進行邏輯備份之前,先對整個數據庫加上全局鎖,一旦加了全局鎖之后,其他的DDL、 DML全部都處于阻塞狀態,但是可以執行DQL語句,也就是處于只讀狀態,而數據備份就是查詢操作。 那么數據在進行邏輯備份的過程中,數據庫中的數據就是不會發生變化的,這樣就保證了數據的一致性和完整性。

1.2語法

1.3 一致性備份案例

(這里試試在window上遠程訪問Linux系統中的數據庫)

(1)先查到Linux系統中的IP地址

學習:

ip addr命令一共輸出了4項:

1)ens33是物理網卡驅動程序創建的,

2)lo是內核啟動時自己創建的環回網絡接口

3)virbr0和virbr0-nic則是我們自己創建的veth peer虛擬網絡接口。

我們可以將每個網絡接口都視作一條管道,管道的一端連接到本機內核路由子系統,而另一端根據類型各有不同。物理網卡對應的網絡接口另一端通向設備驅動程序; veth peer類型的接口另一端通向對方;tun類型設備的另一端通向用戶應用程序。

另外,從上面的輸出內容中還可以注意到的是:網絡接口上并不是一定都有IP地址(本文提到的IP地址專指IPv4地址),比如virbr0和virbr0-nic后面都沒有IP地址。IP地址還是屬于主機的,而不是某個網絡接口。

(2)Windows本地遠程連接代碼:mysql -h192.168.145.128 -uroot -p

開3個,模擬三個客戶端:

(3)給一個客戶端加上全局鎖,相當于數據庫實例192.168.145.128已經被鎖住了,

加上全局鎖:flush tables with read lock;

加上之后,所有客戶端都只能讀了,不能進行修改了。堵塞狀態可以輸入Ctrl+C退出當前。

(4)備份數據

mysqldump -h192.168.145.128 -uroot -p1234 itheima > D:/itheima.sql

注意是在Windows下的命令(exit退出到Windows命令行執行),而不是在mysql中;

要加入遠程連接參數-h192.168.145.128,要訪問的是遠程的,而不是Windows上的;

最后沒有;分號!!!

D盤中成功有備份文件,里面創建表插入數據的SQL語句都有。

(5)釋放鎖并進行修改操作。

1.4 全局鎖特點

數據庫中加全局鎖,是一個比較重的操作,存在以下問題:

(1)如果在主庫上備份,那么在備份期間都不能執行更新,業務基本上就得停擺。

(2)如果在從庫上備份,那么在備份期間從庫不能執行主庫同步過來的二進制日志(binlog),會導致主從延遲

此外:在InnoDB引擎中,我們可以在備份時加上參數 --single-transaction 參數來完成不加鎖的一致 性數據備份。

2表級鎖

2.1表鎖

對于表鎖,分為兩類:

表共享讀鎖(read lock)

表獨占寫鎖(write lock)

語法:

加鎖:lock tables 表名... read/write。

釋放鎖:unlock tables / 客戶端斷開連接 。

2.1.1共享讀鎖

測試:

2.1.2獨占寫鎖

測試:

結論:

讀鎖不會阻塞其他客戶端的讀,但是會阻塞寫。

寫鎖既會阻塞其他客戶端的讀,又會阻塞 其他客戶端的寫。

2.2元數據鎖

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

這里的元數據,大家可以簡單理解為就是一張表的表結構。 也就是說,某一張表涉及到未提交的事務時,是不能修改這張表的表結構的。在MySQL5.5中引入了MDL,當對一張表進行增刪改查的時候,加MDL讀鎖(共享);當對表結構進行變更操作的時候,加MDL寫鎖(排他)。

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

演示:新建兩個shell遠程連接窗口,Ctrl+L清除命令。

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

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

只有當一個事務提交完之后,alter語句才能繼續。

查看元數據鎖的加鎖情況:

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

2.3元數據鎖

。。。。要開組會了

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

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

相關文章

GitLab配置免密登錄之后仍然需要Git登錄的解決辦法

GitLab配置免密登錄之后仍然需要Git登錄的解決辦法 因為實習工作需要,要在本地拉取gitlab上的代碼,設置了密鑰之后連接的時候還需要登錄的token,摸索之后有了下面的解決辦法。 方法一: 根據報錯的提示,去網站上設置個人…

動手學自然語言處理:解讀大模型背后的核心技術

自從 ChatGPT 橫空出世以來,自然語言處理(Natural Language Processing,NLP) 研究領域就出現了一種消極的聲音,認為大模型技術導致 NLP “死了”。在某乎上就有一條熱門問答,大家熱烈地討論了這個問題。 有…

【STM32】看門狗

1.看門狗簡介 看門狗起始就是一個定時器,從功能上說它可以讓微控制器在程序發生意外(程序進入死循環或跑飛)的時候,能重新恢復到系統剛上電狀態,以保障系統出問題的時候可以重啟一次。說的簡單一點,看門狗…

用英文介紹孟買:Mumbai India‘s Transforming MEGACITY

Mumbai: India’s Transforming MEGACITY Link: https://www.youtube.com/watch?vtWD_-Rzrn8o Summary First Paragraph: Mumbai, India’s financial and entertainment capital, is undergoing a major transformation. With its contiguous urban population nearing 25…

神經網絡實現AND門:邏輯運算的智能化飛躍

神經網絡實現AND門:邏輯運算的智能化飛躍 在人工智能的早期探索中,人們就夢想著用機器模擬人腦的邏輯思考能力。AND邏輯函數作為最基本的邏輯運算之一,其在神經網絡中的實現,標志著我們向智能化邁出了堅實的一步。本文將詳細解釋…

web圖片怎么導入ps?這個方法給你輕松解決!

隨著WebP格式圖片因其體積小、加載快的優勢在網站中日益普及,對于圖片編輯者來說,能夠直接在Photoshop中打開和編輯WebP文件變得尤為重要。 WebPShop插件應運而生,它是一個專為Photoshop設計的模塊,支持打開和保存WebP圖像&#…

ATFX匯市:澳大利亞5月CPI大增0.4百分點,降息預期顯著降溫

ATFX匯市:據澳大利亞統計局數據,澳大利亞5月加權CPI年率為4%,高于前值3.6%,高于預期3.8%,顯示出澳大利亞通脹率頗具韌性。5月份數據公布之前,月度CPI年率平均波幅不足0.1個百分點,呈現出橫盤震蕩…

《數字圖像處理》實驗報告六

一、實驗任務與要求 比較采用不同的色彩空間對彩色圖像處理的效果,處理包括: a)直方圖均衡化 b)圖像增強 二、實驗報告 (一)RGB色彩空間的直方圖均衡化 / 銳化處理 1、matlab 實現代碼: %…

C語言 用getchar函數讀入兩個字符給c1和c2,然后分別用putchar函數和printf函數輸出

用getchar函數讀入兩個字符給c1和c2,然后分別用putchar函數和printf函數輸出這兩個字符并且解答以下三個問題: 1.變量c1和c2應定義為字符型,整形,還是二者皆可? 2.要求輸出c1和C2的ASCII碼,應如何處理&am…

推薦系統(LLM去偏?) | (WSDM24)預訓練推薦系統:因果去偏視角

::: 大家好!今天我分享的文章是來自威斯康星大學麥迪遜分校和亞馬遜AWS AI實驗室的最新工作,文章所屬領域是推薦系統和因果推理,作者針對跨域推薦中的偏差問題提出了一種基于因果去偏的預訓練推薦系統框架PreRec。 ::: 原文:Pre-t…

【MySQL進階之路 | 小結篇】MySQL鍵約束KEY與索引INDEX

1. 鍵約束 關鍵字key 比如UNIQUE KEY就是一個唯一性約束,用于確保表中的某一列或多列的組合具有唯一性,不允許有重復值.當定義一個唯一性約束的時候,會自動創建一個唯一性索引來支持這一約束,這意味著它同時也起到了索引的作用.…

mobaXterm上傳文件進度一直為0%

在這里修改了senssion、重啟都沒有用 最后發現是文件存放的路徑中不能有中文,改了之后就成功上傳了

開展FMEA培訓時需要做好哪些準備?

FMEA(失效模式與影響分析)作為一種預防性的質量工具,正逐漸成為當代企業提升產品競爭力的關鍵。然而,很多企業在開展FMEA時,卻常常因為準備工作不足而事倍功半。那么,開展FMEA培訓時需要做好哪些準備呢&…

Jenkins流水線發布,一篇就解決你的所有疑惑

這次搭建的項目比較常規,前端是react寫的,后端是springboot,并且由于是全棧開發,所以是在同一個項目中。接下來我演示下怎么用jenkins進行自動化發布。 1.jenkins必裝插件 這里用到的是jenkinsFile主要是基于Groovy這個沙盒,有些前置插件。這里使用maven進行打包,所以需…

springboot實現json文件生成,壓縮為zip文件并在瀏覽器下載

示例 RestController public class FileController {private static final Logger logger LoggerFactory.getLogger(FileController.class);private static final String filePath "/fileTemp";Autowiredprivate ObjectMapper objectMapper;GetMapping("/v1/…

測試基礎16:測試用例設計方法-測試大綱法

課程大綱 1、應用場景 驗證頁面跳轉:有多個窗口/頁面,每個窗口/頁面有多個動作,每個動作之間有相互的聯系的場景。看點擊后,頁面跳轉正確與否。 2、設計步驟 step1.列出大綱:列出涉及的頁面和頁面可執行的動作。 s…

生命在于學習——Python人工智能原理(4.7)

四、Python的程序結構與函數 4.4 函數 函數能將代碼劃分為若干模塊,每一個模塊可以相對獨立的實現某一個功能,函數有兩個主要功能,分別是降低編程難度和實現代碼復用,函數是一種功能抽象,復用它可以將一個復雜的大問…

深拷貝與淺拷貝的理解

深拷貝和淺拷貝是復制對象時的兩種不同方式,它們之間的區別在于它們如何處理對象的引用類型成員。 淺拷貝(Shallow Copy) 淺拷貝是指創建一個新對象,這個新對象是對原對象的字段的一個精確副本。對于字段中的基本數據類型&#…

【C#】找不到屬性集方法。get只讀屬性用了反射設置setValue肯定報錯

歡迎來到《小5講堂》 這是《C#》系列文章,每篇文章將以博主理解的角度展開講解。 溫馨提示:博主能力有限,理解水平有限,若有不對之處望指正! 背景 找不到屬性集方法。get只讀屬性用了反射設置setValue肯定報錯 報錯…

IPFoxy Tips:匿名海外代理IP的使用方法及注意事項

在互聯網上,隱私和安全問題一直備受關注。為了保護個人隱私和數據安全,使用匿名代理IP是一種常用的方法。匿名代理IP可以隱藏用戶的真實IP地址,使用戶在訪問網站時更加隱秘和安全。 本文將介紹匿名代理IP的基本原理和核心功能。 基本原則 匿…