mysql 開發進階篇系列 12 鎖問題(隔離級別下鎖的差異)

来源:https://www.cnblogs.com/MrHSR/archive/2018/08/01/9403316.html
-Advertisement-
Play Games

1. innodb在不同隔離級別下的一致性讀及鎖的差異 不同的隔離級別下,innodb處理sql 時採用的一致性讀策略和需要的鎖是不同的,同時,數據恢復和複製機制的特點,也對一些sql的一致性讀策略和鎖策略有很大影響。對於許多sql, 隔離級別越高,innodb給記錄集的鎖就越嚴格(龍其是使用範圍條 ...


1. innodb在不同隔離級別下的一致性讀及鎖的差異
  不同的隔離級別下,innodb處理sql 時採用的一致性讀策略和需要的鎖是不同的,同時,數據恢復和複製機制的特點,也對一些sql的一致性讀策略和鎖策略有很大影響。對於許多sql, 隔離級別越高,innodb給記錄集的鎖就越嚴格(龍其是使用範圍條件的時候),產生的鎖衝突的可能性也就越高,對併發性事務處理性能的影響也就越大。因此,在應用中,應該儘量使用較低的隔離級別,減少鎖爭用。通常使用Read Commited隔離級別就足夠了, 對於一些確實需要更高隔離級別的事務,可能在程式中執行 SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ 或SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE 動態來改變隔離級別。 

  下麵重點看下REPEATABLE READ與Read commited 鎖申請的不同區別,在增刪改查上申請的鎖都是一致的,但在事務中鎖釋放的時間是不一樣的這點需要註意。

SQL

條件

Read uncommited

Read commited

Repeatable read

serializable

Select

 

=

None locks

Consisten read/

None locks

Consisten read/

None locks

Share locks

範圍

None locks

Consisten read/

None locks

Consisten read/

None locks

Share next-key

Update

=

X(排它鎖)

X

X

X

範圍

X next-key

X next-key

X next-key

X next-key

Insert

 

X

X

X

X

REPLACE

無鍵衝突

X

X

X

X

鍵衝突

X next-key

X next-key

X next-key

X next-key

Delete

 

=

X

X

X

X

範圍

X next-key

X next-key

X next-key

X next-key

Select ..from

Lock in share mode

=

Share locks

Share locks

Share locks

Share locks

範圍

Share locks

Share locks

Share next-key

Share next-key

Select ..from

For update

=

X

X

X

X

範圍

X

Share locks

X next-key

X next-key

Insert into..

Select ..

Innodb_locks_unsafe

_for_binlog=off

Share next-key

Share next-key

Share next-key

Share next-key

Innodb_locks_unsafe

_for_binlog=on

None locks

Consisten read/

None locks

Consisten read/

None locks

Share next-key

Create table..

Select ..

Innodb_locks_unsafe

_for_binlog=off

Share next-key

Share next-key

Share next-key

Share next-key

Innodb_locks_unsafe

_for_binlog=on

None locks

Consisten read/

None locks

Consisten read/

None locks

Share next-key


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 在最近的工作中,由於自己粗(zuo)心(si)誤update操作導致幾百行的數據出現錯誤,在心急如焚的同時(那時候我竟然不知道除了備份之後還有binlog日誌恢復)立馬查資料學習binlog的恢復,隨後立馬進行了恢復。雖然可以假裝自己沒出錯(emmmmm......最後還是得承認的!),但下班 ...
  • 轉發:https://zm10.sm-tc.cn/?src=l4uLj4zF0NCIiIjRnJGdk5CYjNGckJLQrIqNiZaJnpOWjIvQj9DHzs7Gx8bO0ZeLkpM%3D&uid=38c62520cad411e395617b1a9eafc437&hid=d90c1542 ...
  • CTE 也叫公用表表達式和派生類非常類似 先定義一個USACusts的CTE with () 稱為內部查詢 與派生表相同,一旦外部查詢完成後,CTE就自動釋放了 CTE內部方式 就是上面代碼所表示的方式 其實還有一種外部方式 定義多個CTE 多個CTE用 , 隔開 通過with 記憶體 可以在外查詢中 ...
  • 1、備份伺服器上MySQL資料庫 2、查看備份後的SQL腳本 3、查詢伺服器安裝的MySQL 4、停止MySQL服務 5、卸載已經安裝的MySQL 6、查找遺留的MySQL文件 7、/var/lib/mysql為本次MySQL的data目錄,建議安裝先備份 8、刪除卸載前一個版本MySQL的遺留文件 ...
  • [20180801]insert導致死鎖.txt--//鏈接http://www.itpub.net/thread-2104135-2-1.html的討論,自己有點疏忽了,插入主鍵相同也會導致死鎖.--//自己按照鏈接http://www.xifenfei.com/2011/05/insert%E5 ...
  • hadoop部署的若幹問題解決 1 清理系統記憶體cached方法,解決Out of memory問題 INFO org.apache.hadoop.ipc.Server: IPC Server Responder: starting 2018-07-31 10:34:58,344 FATAL org... ...
  • 該文章是基於 Hadoop2.7.6_01_部署 進行的 Flume官方文檔:FlumeUserGuide 常見問題:記flume部署過程中遇到的問題以及解決方法(持續更新) 1. 前言 在一個完整的大數據處理系統中,除了hdfs+mapreduce+hive組成分析系統的核心之外,還需要數據採集、 ...
  • innodb為實現MVCC所使用的內部快照,RR(REPEATABLE READ)隔離級別下在第一次查詢時創建read view,RC(READ COMMITTED)隔離級別下會在每次查詢時創建read view以下測試在RR隔離級別下,資料庫版本為5.7.201. select * from ta ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...