欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL的鎖機(jī)制及排查鎖問題解析

 更新時(shí)間:2025年01月03日 14:19:36   作者:快樂江小魚  
MySQL的鎖機(jī)制包括行鎖和表鎖,行鎖進(jìn)一步細(xì)分為RecordLock、GapLock和Next-keyLock,行鎖因其細(xì)粒度而減少?zèng)_突但開銷大,可能引起死鎖,本文介紹MySQL的鎖機(jī)制及排查鎖問題,感興趣的朋友一起看看吧

MySQL的鎖機(jī)制及排查鎖問題

  • 按照鎖的粒度可以分為行鎖和表鎖,按照是否可寫可以分為讀鎖和寫鎖。
  • 行鎖是MySQL中粒度最細(xì)的鎖,對當(dāng)前操作的行進(jìn)行加鎖。行鎖會大大減少數(shù)據(jù)庫操作的沖突,加鎖的粒度最小,但是加鎖的開銷最大,有可能會出現(xiàn)死鎖。
  • 行鎖的實(shí)現(xiàn)算法有Record Lock記錄鎖、Gap Lock間隙鎖和Next-key Lock。記錄鎖是對單行記錄加鎖,對索引項(xiàng)加鎖,鎖定符合條件的行,其他事務(wù)不能修改和刪除加鎖項(xiàng)。間隙鎖鎖定的是一個(gè)范圍,不包含記錄本身。對索引項(xiàng)之間的間隙加鎖,鎖定記錄的范圍,對第一條記錄前的間隙或最后一條記錄后的間隙加鎖,不包含索引項(xiàng)本身。其他事務(wù)不能在鎖范圍內(nèi)插入數(shù)據(jù),這樣可以防止其他事務(wù)新增幻影行。Next-key Lock是默認(rèn)的鎖,同時(shí)鎖住數(shù)據(jù)和間隙鎖。鎖定索引項(xiàng)本身和索引范圍。
  • 表鎖是MySQL中粒度最大的鎖,對當(dāng)前正在操作的整張表加鎖,資源開銷比行鎖少,不會出現(xiàn)死鎖的情況,但是發(fā)生鎖沖突的概率比較大。InnoDB默認(rèn)的是行鎖。
  • 讀鎖也成為共享鎖,其他用戶可以并發(fā)讀取數(shù)據(jù),但任何事務(wù)都不能獲取數(shù)據(jù)上的寫鎖,直到釋放所有的讀鎖。
  • 寫鎖也成為排他鎖,如果事務(wù)T對數(shù)據(jù)對象A加上寫鎖,就只允許事務(wù)T讀取和修改數(shù)據(jù)對象A。

排查鎖的問題

  • 排查鎖的問題可以從表鎖和行鎖考慮。
  • 查看表鎖的情況后分析。
-- 查看所有線程
show full processlist;
-- 查看正在使用的表
show open tables;
-- 查看innodb服務(wù)器信息
show engine innodb status;
-- 查看表鎖:Table_locks_waited-出現(xiàn)表鎖爭用而發(fā)生的等待次數(shù),Table_locks_immediate-可以立即獲取鎖的次數(shù)
show status like 'table%';

查看行鎖的情況

-- Innodb_row_lock_current_waits:當(dāng)前正在等待鎖定的數(shù)量
-- Innodb_row_lock_time:從系統(tǒng)啟動(dòng)到現(xiàn)在鎖定的總時(shí)間
-- Innodb_row_lock_time_avg:每次等待所花的平均時(shí)間
-- Innodb_row_lock_time_max:從系統(tǒng)啟動(dòng)到現(xiàn)在等待最長的一次所花的時(shí)間
-- Innodb_row_lock_waites:從系統(tǒng)啟動(dòng)到現(xiàn)在總共等待的次數(shù)
show status like 'innodb_row_lock%';
-- 查看information_schema庫
-- innodb_trx表用來顯示當(dāng)前運(yùn)行innodb事務(wù)情況,不能判斷鎖的情況
-- innodb_locks表可以查看鎖的情況
-- innodb_lock_waits表可以查看鎖等待的情況

到此這篇關(guān)于MySQL的鎖機(jī)制及排查鎖問題的文章就介紹到這了,更多相關(guān)mysql鎖機(jī)制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql中key 、primary key 、unique key 與index區(qū)別

    mysql中key 、primary key 、unique key 與index區(qū)別

    這篇文章主要介紹了mysql中key 、primary key 、unique key 與index區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • MySql存儲過程異常處理示例代碼分享

    MySql存儲過程異常處理示例代碼分享

    在網(wǎng)上查了好多資料,發(fā)現(xiàn)關(guān)于mysql的異常處理資料都是一些錯(cuò)誤號列表,對于平時(shí)運(yùn)行中,我們可能更多的希望能夠記錄準(zhǔn)確的錯(cuò)誤消息到日志中
    2012-06-06
  • MySQL查詢語句簡單操作示例

    MySQL查詢語句簡單操作示例

    這篇文章主要介紹了MySQL查詢語句簡單操作,結(jié)合實(shí)例形式分析了MySQL數(shù)據(jù)庫、數(shù)據(jù)表創(chuàng)建、數(shù)據(jù)插入、數(shù)據(jù)查詢等相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • SQL行列轉(zhuǎn)換超詳細(xì)四種方法詳解

    SQL行列轉(zhuǎn)換超詳細(xì)四種方法詳解

    在數(shù)據(jù)分析的面試中SQL問題基本上是必問的,其中SQL行列轉(zhuǎn)換的問題出鏡率極其高,重要性也是不言而喻,下面這篇文章主要給大家介紹了關(guān)于SQL行列轉(zhuǎn)換超詳細(xì)四種方法的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 一文詳解MYSQL的多版本并發(fā)控制MVCC(Multi-Version Concurrency Control)

    一文詳解MYSQL的多版本并發(fā)控制MVCC(Multi-Version Concurrency Co

    MVCC是一種用于數(shù)據(jù)庫管理系統(tǒng)的并發(fā)控制技術(shù),允許多個(gè)事務(wù)同時(shí)訪問數(shù)據(jù)庫,而不會導(dǎo)致讀寫沖突,本文就詳細(xì)的介紹了MVCC的具體用法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Linux遠(yuǎn)程部署MySQL數(shù)據(jù)庫詳細(xì)步驟

    Linux遠(yuǎn)程部署MySQL數(shù)據(jù)庫詳細(xì)步驟

    這篇文章主要介紹了Linux遠(yuǎn)程部署MySQL數(shù)據(jù)庫的詳細(xì)步驟,文中步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • mysql時(shí)區(qū)查看與設(shè)置方法

    mysql時(shí)區(qū)查看與設(shè)置方法

    這篇文章主要介紹了mysql時(shí)區(qū)查看與設(shè)置方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 關(guān)于MySQL Memory存儲引擎的相關(guān)知識

    關(guān)于MySQL Memory存儲引擎的相關(guān)知識

    這篇文章主要介紹了關(guān)于MySQL Memory存儲引擎的相關(guān)知識,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-11-11
  • MySQL實(shí)現(xiàn)導(dǎo)出excel的方法分析

    MySQL實(shí)現(xiàn)導(dǎo)出excel的方法分析

    這篇文章主要介紹了MySQL實(shí)現(xiàn)導(dǎo)出excel的方法,結(jié)合實(shí)例形式分析了基于php、js等方法實(shí)現(xiàn)mysql導(dǎo)出Excel的相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • 64位CentOs7源碼安裝mysql-5.6.35過程分享

    64位CentOs7源碼安裝mysql-5.6.35過程分享

    本文給大家分享的是在64位CentOs7系統(tǒng)中使用源碼安裝mysql-5.6.35的詳細(xì)過程,非常的細(xì)致,有需要的小伙伴可以參考下
    2017-02-02

最新評論