mysql中MDL(元數據鎖)的長事務讀寫阻塞如何解決

MDL,即元數據鎖是什么,我們已經介紹過了
那其存在的長事務讀寫阻塞問題,一般是怎么解決的呢,主要有兩種解決方法。

online ddl

MySQL5.6開始,推出一項新功能Online DDL,在ALTER或者CREATE INDEX等語句后添加了兩個參數:

ALTER TABLE user ADD INDEX idx_test_id (test_id), ALGORITHM=INPLACE, LOCK=NONE

ALGORITHM:

  • INPLACE: 表的更改將在原表進行,而不用重建整個表格(在大多數情況下,不需要將數據復制到臨時表)
  • COPY: 將數據復制到臨時表中,重建表格并重建二級索引(相當于傳統方法)

LOCK:

  • NONE: Read and write operations are allowed during the altering process.
  • SHARED: Only read operations are allowed during the altering operations (DML is not allowed).
  • EXCLUSIVE: The entire table will be locked for both reading and writing (neither select nor DML are allowed).

ONLINE DDL的局限性

  • 僅適用于InnoDB(語法上它可以與其他存儲引擎一起使用,如MyISAM,但MyISAM只允許algorithm =
    copy,與傳統方法相同);
  • 無論使用何種鎖(NONE,共享或排它),在開始和結束時都需要一個短暫的時間來鎖表(排它鎖);參考這里
  • 在添加/刪除外鍵時,應該禁用 foreign_key_checks 以避免表復制;
  • 仍然有一些 alter 操作需要 copy 或lock 表(老方法), 有關哪些表更改需要表復制或表鎖定,請查看手冊;
  • 如果在表上有 ON … CASCADE 或 ON …SET NULL 約束,則在 alter table 語句中不允許LOCK = NONE;
  • Online DDL會被復制到從庫(同主庫一樣,如果 LOCK = NONE,從庫也不會加鎖),但復制本身將被阻止,因為 alter在從庫以單線程執行,這將導致主從延遲問題。

pt-online-schema-change

pt-osc 用于 alter table 時不鎖表,簡單地說,這個工具創建一個與原始表一樣的新的空表,并根據需要更改表結構,然后將原始表中的數據以小塊形式復制到新表中,然后刪除原始表,然后將新表重命名為原始名稱。在復制過程中,對原始表的所有新的更改(insert,delete,update)都將應用于新表,因為在原始表上創建了一個觸發器,以確保所有新的更改都將應用于新表。
pt-osc工作過程

  • 創建一個和要執行 alter 操作的表一樣的新的空表結構(是alter之前的結構)
  • 在新表執行alter table 語句(速度應該很快)
  • 在原表中創建觸發器3個觸發器分別對應insert,update,delete操作
  • 以一定塊大小從原表拷貝數據到臨時表,拷貝過程中通過原表上的觸發器在原表進行的寫操作都會更新到新建的臨時表(會限制每次拷貝數據的行數以保證拷貝不會過多消耗服務器資源,采用LOCK IN SHARE MODE來獲取要拷貝數據段的最新數據并對數據加共享鎖阻止其他會話修改數據,不過每次加S鎖的行數不多,很快就會被釋放)
  • Rename原表到old表中,在把臨時表Rename為原表(整個過程只在rename表的時間會鎖一下表,其他時候不鎖表)
  • 如果有參考該表的外鍵,根據alter-foreign-keys-method參數的值,檢測外鍵相關的表,做相應設置的處理
  • 默認最后將舊原表刪除

PT-ONLINE-SCHEMA-CHANGE 的局限性

  • 在使用此工具之前,應為表定義PRIMARY KEY或唯一索引,因為它是DELETE觸發器所必需的;
  • 如果表已經定義了觸發器,則不支持pt-osc;(顯然不是不能有任何觸發器,只是不能有針對insert、update、delete的觸發器存在,因為一個表上不能有兩個相同類型的觸發器)
  • 如果表具有外鍵約束,需要使用選項 --alter-foreign-keys-method ;
  • 還是因為外鍵,對象名稱可能會改變(indexes names 等);
  • 在Galera集群環境中,不支持更改MyISAM表,系統變量wsrep_OSU_method 必須設置為 TOI(total order isolation)。

如何選擇?

在這里插入圖片描述

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

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

相關文章

【教學類-35-05】17號的學號字帖(A4豎版1份)

作品展示: 背景需求: 大四班17號男孩目前無法自主數學數字。他表示自己能夠認識數字,但不會寫。 保育老師說:我曾經教過他,抓著手示范的。但是他記不住。家里估計也不練習的。年齡還沒到,下學期再看看能不…

有限空間作業中毒窒息事故頻發,漢威科技創新方案護航

工貿企業有限空間是我國重大事故多發頻發的重點領域之一,安全問題形勢嚴峻。 有限空間是指封閉或者部分封閉、未被設計為固定工作場所,人員可以進入,通風不良,易造成有毒有害物質、易燃易爆氣體積聚或者氧含量不足的空間&#xf…

消息中間件基本概念

基本概念 消息隊列三個場景:異步,削峰,解耦 異步:將整個流程進行異步發送,也就是說本來順序執行的程序化流程,異步后可以同時進行操作,互不影響,但保持最終結果一致性;…

ChatGPT顛覆性地改變了個性化學習

開發者歡呼,ChatGPT開啟了教育的新時代教育者和學生都將從革命性的技術中受益ChatGPT是由OpenAI開發的強大的語言模型,它在個性化學習領域取得了重大突破。這一新的發展有望徹底改變教育的方式,使其更加定制化、有趣和有效。 開發者和教育者的重大新聞 這一消息對于一直努…

excel做預測的方法集合

一. LINEST函數 首先,一元線性回歸的方程: y a bx 相應的,多元線性回歸方程式: y a b1x1 b2x2 … bnxn 這里: y - 因變量即預測值x - 自變量a - 截距b - 斜率 LINEST的可以返回回歸方程的 截距(a) 和 斜…

jsp使用 分頁專用工具

分頁器,根據過來的參數計算當著頁應當從哪一條記錄開始顯示,并且顯示到哪。 PageUtils [pageSize5, currIndex1, totalCount166, totalPage34, startPosition0] PageUtils [pageSize5, currIndex5, totalCount166, totalPage34, startPosition20] PageUt…

5.10 Windows驅動開發:摘除InlineHook內核鉤子

在筆者上一篇文章《內核層InlineHook掛鉤函數》中介紹了通過替換函數頭部代碼的方式實現Hook掛鉤,對于ARK工具來說實現掃描與摘除InlineHook鉤子也是最基本的功能,此類功能的實現一般可在應用層進行,而驅動層只需要保留一個讀寫字節的函數即可…

得帆云助力容百科技構建CRM系統,實現LTC全流程管理

寧波容百新能源科技股份有限公司 寧波容百新能源科技股份有限公司(以下簡稱“容百科技”)于2014年9月建立,是高科技新能源材料行業的跨國型集團公司。專業從事鋰電池正極材料的研發、生產和銷售,于2019年登陸上交所科創板&#x…

Python 數據分析:日期型數據的玩轉之道

更多資料獲取 📚 個人網站:ipengtao.com 在數據分析的領域中,處理日期型數據是至關重要的一環。Python 提供了豐富的工具和庫,使得對日期進行分析、處理、可視化變得更加輕松。本文將深入探討 Python 中如何玩轉日期型數據&#…

連鎖零售企業如何優化網絡性能?

在傳統的WAN網絡中,分支機構通常通過專線或者MPLS連接到總部或數據中心,但這種連接受制于地理位置。而SD-WAN(Software-Defined Wide Area Network)這種創新的網絡架構,它通過軟件定義和虛擬化技術,將分支機…

Javascript 前端分頁——根據頁面大小(pageSize)和總行數(total)計算總頁面數(totalPage)

分頁時,根據頁面大小(pageSize)和總行數(total),計算總頁面數(totalPage) 一:總行數取余頁面大小,等于0,則頁數為整頁數,否則有余數&a…

解讀鏈上經濟“一等公民”:加密AI代理的優勢和前沿應用

機器人正在成為加密經濟的“一等公民”,最近的案例就能印證這一趨勢。 搜索者(Searchers)部署像Jaredfromsubway.eth這樣的機器人,利用真人用戶對便利的渴望在DEX搶先交易。Banana Gun和Maestro允許真人用戶通過Telegram的便利進…

力扣每日一題day31[101. 對稱二叉樹]

給你一個二叉樹的根節點 root , 檢查它是否軸對稱。 示例 1: 輸入:root [1,2,2,3,4,4,3] 輸出:true示例 2: 輸入:root [1,2,2,null,3,null,3] 輸出:fals 思路 對于二叉樹是否對稱&#xff…

二分查找算法

文章目錄 二分查找二分的實戰講解二分查找普通二分模版 在排序數組中查找元素的第一個和最后一個位置萬能二分模版 總結 二分查找 什么是二分查找:就是定義左右2個指針(此指針非真指針)取中間值 通過一次次取中間值找到要找到的數 二分的實戰講解 二分查找 題目:地址 題目解析…

ELK技術棧介紹及簡單使用實例

1. ELK技術棧介紹 引言 在當今數據驅動的世界里,有效地管理和分析大量日志數據變得至關重要。這里我們將深入探討ELK技術棧,這是一種流行的日志管理解決方案,它結合了三個開源項目:Elasticsearch、Logstash和Kibana。ELK技術棧因…

測試文檔---智力沖刺

文章目錄 項目背景測試計劃UI測試接口測試手工測試 測試總結 項目背景 項目描述:“智力沖刺”是一款網頁小游戲,就像我們平時看到的網頁游戲一樣,前端頁面負責展示游戲效果,后端服務器來實現游戲的邏輯。在我們的“智力沖刺”游戲…

YOLOv7 學習筆記

文章目錄 前言一、YOLOv7貢獻和改進二、YOLOv7核心概念三、YOLOv7架構改進總結 前言 在深度學習和計算機視覺領域,目標檢測一直是一個極具挑戰性和實用性的研究領域。特別是在實時目標檢測方面,準確率和速度之間的平衡成為了關鍵考量因素。YOLO&#xf…

C語言精選——選擇題Day40

第一題 1. int a[10] {2,3,5}, 請問a[3]及a[3]之后的數值是() A:不確定的數據 B:5 C:0 D:0xf f f f f f f f 答案及解析 C 數組的不完全初始化,會自動把沒初始化的部分初始化為0; 第…

postman做接口自動化測試

接口是用來連接服務端和客戶端,一般返回的數據都是json。 get和post請求的區別: 1. get請求比post請求安全 2. get請求參數有長度限制,post請求沒有 3. get請求沒有body,參數都是放在url里面,而post請求是放在body…

大華DSS S2-045 OGNL表達式注入漏洞復現

0x01 產品簡介 大華DSS安防監控系統平臺是一款集視頻、報警、存儲、管理于一體的綜合安防解決方案。該平臺支持多種接入方式,包括網絡視頻、模擬視頻、數字視頻、IP電話、對講機等。此外,該平臺還支持多種報警方式,包括移動偵測、區域入侵、越線報警、人員聚集等。 0x02 漏…