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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...