[MySQL] mysql 的行級顯式鎖定和悲觀鎖

来源:https://www.cnblogs.com/taoshihan/archive/2019/04/08/10670912.html
-Advertisement-
Play Games

隱式和顯式鎖定:1.innodb是兩階段鎖定協議,隱式鎖定比如在事務的執行過程中.會進行鎖定,鎖只有在commit或rollback的時候,才會同時被釋放2.特定的語句進行顯式鎖定 select ... lock in share mode ; select ... for update,where ...


隱式和顯式鎖定:
1.innodb是兩階段鎖定協議,隱式鎖定比如在事務的執行過程中.會進行鎖定,鎖只有在commit或rollback的時候,才會同時被釋放
2.特定的語句進行顯式鎖定 select ... lock in share mode ; select ... for update,where條件裡面的必須是主鍵,否則會鎖整張表
3.需要用在事務中使用,並且兩個查詢都需要for update才能阻塞住另一個去讀,也就是實現寫鎖,阻塞別的讀鎖,悲觀排他的目的
4.如果不想開啟事務,就把autocommit關掉,這樣預設就是開啟事務了,每次都要commit才行

測試:
會話1開啟事務,並且select ... where id=1 for update

 

會話2也去select ... where id=1 for update,會被阻塞,普通的select沒有影響

 


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

-Advertisement-
Play Games
更多相關文章
  • 驅動問題,名為“Insyde Airplane Mode HID Mini-Driver”的驅動,這個驅動是專門用來快捷管理飛行模式的。 卸載完成後重啟,無限開關飛行模式問題得到解決! ...
  • 用戶進程的記憶體頁分為兩種: file backed pages(文件背景頁) anonymous pages(匿名頁) 比如進程的代碼段、映射的文件都是file backed,而進程的堆、棧都是不與文件相對應的、就屬於匿名頁。 file backed pages在記憶體不足的時候可以直接寫回對應的硬碟 ...
  • 問題描述:在升級Exchange 2013 CU22檢查群集節點狀態的過程中發現群集組處於失敗狀態,具體報錯信息如下:警告:資料庫可用性組”***”見證處於失敗狀態。資料庫可用性組要求見證伺服器保持仲裁。請使用 set-DatabaseAvailabilityGroup cmdlet重新創建此見證服... ...
  • 在之前寫過一篇博客"關係資料庫如何快速查詢表的記錄數",裡面介紹了使用sp_spaceused查看表的記錄數是否正確的問題,具體如下: 關於問題3:有多個索引的表,是否記錄數會存在不一致的情況? 答案:個人測試以及統計來看,暫時發現多個索引的情況下,sys.partitions中的rows記錄數都是... ...
  • windows系統無法改成 lower_case_table_names=0, 因為windows預設是1,就算改也只能改成2,以下截自 MySQL 8.0 Reference Manual 然後,當我們按照網上方法把 my.ini中的lower_case_table_names強行改成2之後,會發 ...
  • 相信大家在很多實際業務中(特別是後臺系統)會使用到各種篩選條件來篩選結果集 首先添加測試數據 1.有使用EXEC來避免全表掃描 或者條件少的情況下 2.使用IS NULL來實現 第一種方案,不會破壞索引,但冗餘的代碼看起來讓人難受 第二種方案,會導致全表掃描(破壞索引) 以上是網上查閱的資料,方案二 ...
  • 每一個資料庫都有自己的數據類型。同樣子redis為我們提供了五種類型的數據——字元串、哈希、列表、集合、有序集合。我們知道關係型數據的數據存放型式是一張二維表。用行和列來表示數據之間的關係。redis是一個nosql資料庫當然不可能在用什麼二維表的形式來表示了。他所有的數據都是以key=value的 ...
  • AI中台是一套完整的智能模型全生命周期管理平臺和服務配置體系,基於數據平臺服務,通過對智能服務的共用復用、對智能服務研發相關角色進行管理,以及研發流程的標準化、自動化,對前臺業務提供個性化智能服務的迅速構建能力支持。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...