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

MySQL的鎖機制及排查鎖問題解析

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

MySQL的鎖機制及排查鎖問題

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

排查鎖的問題

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

查看行鎖的情況

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

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

相關文章

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

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

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

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

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

    MySQL查詢語句簡單操作示例

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

    SQL行列轉換超詳細四種方法詳解

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

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

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

    Linux遠程部署MySQL數據庫詳細步驟

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

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

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

    關于MySQL Memory存儲引擎的相關知識

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

    MySQL實現導出excel的方法分析

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

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

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

最新評論