MySQL 核心模塊揭秘 | 03 期 | 我是一個事務,請給我一個對象
每個事務都有一個對象,這篇文章我們聊聊,事務的對象從哪裏來,要到哪裏去。 作者:操盛春,愛可生技術專家,公眾號『一樹一溪』作者,專注於研究 MySQL 和 OceanBase 源碼。 愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 我是一個事務,請給我一個對象 本文基於 MySQL 8.0.32 源碼,存儲引擎為 InnoDB。 目錄 [TOC] 正文
昵稱 愛可生開源社區
貢獻者14
粉絲0
每個事務都有一個對象,這篇文章我們聊聊,事務的對象從哪裏來,要到哪裏去。 作者:操盛春,愛可生技術專家,公眾號『一樹一溪』作者,專注於研究 MySQL 和 OceanBase 源碼。 愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 我是一個事務,請給我一個對象 本文基於 MySQL 8.0.32 源碼,存儲引擎為 InnoDB。 目錄 [TOC] 正文
昵稱 愛可生開源社區
做了那麼多準備工作,終於要啓動 InnoDB 事務了。 作者:操盛春,愛可生技術專家,公眾號『一樹一溪』作者,專注於研究 MySQL 和 OceanBase 源碼。 愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 本文基於 MySQL 8.0.32 源碼,存儲引擎為 InnoDB。 1. 啓動事務 在《BEGIN 語句會馬上啓動事務嗎?》這篇文章中,我們介紹
昵稱 愛可生開源社區
事務都以讀事務身份啓動,讀事務和只讀事務會在需要時發生變化,它們會怎麼變化?這是本文要回答的問題。 作者:操盛春,愛可生技術專家,公眾號『一樹一溪』作者,專注於研究 MySQL 和 OceanBase 源碼。 愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 本文基於 MySQL 8.0.32 源碼,存儲引擎為 InnoDB。 1. update、delete
昵稱 愛可生開源社區
1. 準備工作 參數配置: binlog_format = ROW binlog_rows_query_log_events = OFF 創建測試表: CREATE TABLE `t_binlog` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `i1` int DEFAULT '0', `str1` varchar(32) DEFAULT
昵稱 愛可生開源社區
本文介紹了 MySQL 8.3 的一個新特性,給 GTID 打標籤~ 作者:李富強,愛可生 DBA 團隊成員,熟悉 MySQL,TiDB,OceanBase 等數據庫。相信持續把對的事情做好一點,會有不一樣的收穫。 愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 本文約 900 字,預計閲讀需要 3 分鐘。 摘要 MySQL 8.3 創新版於 2024 年
昵稱 愛可生開源社區
二階段提交的 prepare 階段,binlog 和 InnoDB 各自會有哪些動作? 本文基於 MySQL 8.0.32 源碼,存儲引擎為 InnoDB。 1. 二階段提交 二階段提交,顧名思義,包含兩個階段,它們是: prepare 階段。 commit 階段。 我們只考慮 SQL 語句操作 InnoDB 表的場景,對於用户事務,是否使用二階段提交,取決於是否開啓了 binlog。 因
昵稱 愛可生開源社區
本文首發於公眾號:Hunter後端 原文鏈接:MySQL面試必備三之事務 這一篇筆記介紹一下 MySQL 的事務,面試中常被問到關於事務的幾個問題如下: 事務是什麼 為什麼需要事務,事務有什麼作用 事務的特點 事務可能帶來哪些問題 事務有哪些隔離級別,這些隔離級別都可以解決哪些問題 可重複讀隔離級別下能否解決幻讀問題 如何解決幻讀問題 以下是本篇筆記目錄: 什麼是事務
昵稱 Hunter
對事務工作接觸了不少,這裏完整的從基本概念,原理,分析,案列等等梳理下事務機制的底層邏輯; 事務機制的底層邏輯 事務的基本特性、機制及原理 百度百科定義 事務(Transaction),一般是指要做的或所做的事情。在計算機術語中是指訪問並可能更新數據庫中各種數據項的一個程序執行單元(unit)。事務通常由高級數據庫操縱語言或編程語言(如SQL,C++或Java)書寫的用户程序的執行所引起,並用形如
昵稱 edagarli
MySQL 事務 數據庫事務指的是一組數據操作,事務內的操作要麼就是全部成功,要麼就是全部失敗,如果部分成功,那麼已成功的必須回滾,恢復數據的原始狀態。 假設一個網購付款的操作,用户付款後要涉及到訂單狀態更新、扣庫存以及其他一系列動作,這就是一個事務,如果一切正常那就相安無事,一旦中間有某個環節異常,那整個事務就要回滾,總不能更新了訂單狀態但是不扣庫存吧,這問題就大了。 事務具有原子性(Atomi
昵稱 杜若
對比上一篇,這篇聊聊【讀已提交】隔離級別下,唯一索引衝突怎麼加鎖。 作者:操盛春,愛可生技術專家,公眾號『一樹一溪』作者,專注於研究 MySQL 和 OceanBase 源碼。 愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 本文基於 MySQL 8.0.32 源碼,存儲引擎為 InnoDB。 目錄 [TOC] 正文 1. 準備工作 創建測試表: CR
昵稱 愛可生開源社區
一、分佈式事務 1.事務的概念 · 概念:事務是一個完整的、不可分割操作單元,整個事務要麼全部執行成功,要麼全部執行失敗。 · 事務具備4個特性:ACID A:原子性--完整的、不可分割操作單元 C:一致性--數據的一致性:事務開始前和事務結束後,數據總量不變 I:隔離性--事務相互隔離,互不影響 D:持久性--事務一旦提交,永久落盤 2.傳統事務 傳統事務由 數據庫
昵稱 玉喵
JDBC操作事務 事務 事務的ACID 原子性:指事務是一個不可分割的單位,事務中的操作要麼都發生,要麼都不發生 一致性: 事務必須使數據庫從一個一致性狀態變換成另一個一致性狀態 隔離性: 一個事務的執行不能被其他事務干擾,各事務之間是隔離的 持久性: 一個事務一旦被提交,對數據庫中的數據的改變就是永久的 JDBC操作事務 可以使用JDBC來操作事務 conn.setAut
昵稱 HeartAttack
事務隔離級別是數據庫管理系統(DBMS)中用於控制併發事務之間相互影響的程度。它定義了一個事務在訪問數據時,是否能看到其他事務的中間狀態或未提交的數據。SQL 標準中定義了四種事務隔離。 四種事務隔離級別 隔離級別概述 隔離級別 説明 存在問題 Read Uncommited 允許事務讀未提交的事務 髒讀 Read
昵稱 愛跑步的獼猴桃
在分佈式系統中,事務的傳播行為(Transaction Propagation)指的是在不同的事務上下文中如何處理事務的傳播方式。它決定了一個方法在執行時是否應該在當前事務中運行,是否應該創建新的事務,或者是否應該加入到已有的事務中。事務傳播行為在多層架構的系統(例如 Spring 框架中)尤為重要。 常見的事務傳播行為類型 以下是 Spring 框架中的七種常用事務傳播行為,這些傳播行為可以應用
昵稱 今夜有點兒涼
MVCC(多版本併發控制)底層原理總結: MVCC 是通過維護數據的多個版本來控制併發訪問的技術,它使得數據庫能夠支持高併發事務,同時保證事務之間的隔離性和一致性。在 MySQL 的 InnoDB 存儲引擎中,MVCC 是通過 隱藏列、ReadView 快照 和 undo log 來實現的。 1. 關鍵概念: 隱藏列(Hidden Columns):為了支持 MVCC 機制,InnoDB 在每
昵稱 今夜有點兒涼
1、背景 在我們的日常開發中,經常會存在在一個Service層中調用另外一個Service層的方法。比如:我們有一個TaskService,裏面有一個execTask方法,且這個方法存在事務,這個方法在執行完之後,需要調用LogService的insertLog方法記錄一條日誌,這個方法上也有事務,不管日誌記錄成功還是失敗,都不能影響execTask方法的執行。因此我們很容易寫出如下代碼。 @Tr
昵稱 huan1993
引言 或許你曾寫過這樣的代碼: @Transaction // 開啓事務 public void craeteOrder(Order order) { saveOrder(order); sendMQ(order); // 或者是發送 rpc } 在一個事務內,向 MySQL 寫入數據,接下來發送 MQ 或 RPC 調用。在大部分情況下,這樣寫好像沒什麼問題 但如果此時我們下游執行
昵稱 牛肉燒烤屋
MySQL如何實現事務的四大特性(ACID) MySQL的事務支持主要通過InnoDB存儲引擎實現,其底層機制結合日誌系統(Undo Log/Redo Log)、鎖機制和多版本併發控制(MVCC),具體實現如下: 1. 原子性(Atomicity) 定義:事務的所有操作要麼全部成功,要麼全部失敗回滾。 實現: Undo Log(回滾日誌): 在事務修改數據前,Und
昵稱 今夜有點兒涼
一、併發控制的本質與挑戰 在數據庫系統的核心地帶,併發控制始終是保障數據一致性的核心命題。當每秒百萬級的交易請求在金融系統中穿梭,當電商平台的庫存數字在促銷瞬間劇烈波動,當社交媒體的點贊計數以指數級增長時,數據庫工程師們必須直面併發控制的終極挑戰:如何在保證數據一致性的前提下,實現最大程度的併發性能。 這個問題的解決之道,本質上是對"時間"這個維度的不同處理策略。悲觀鎖(Pessimistic L
昵稱 DBLens
摘要: 本文深入探討了在使用 Spring 及 Spring Boot 框架時,開發者在事務管理、面向切面編程(AOP)以及 Bean 生命週期控制方面常遇到的隱蔽問題。文章結合具體案例、底層原理分析和生產級代碼示例,旨在揭示這些“陷阱”的根源,並提供有效的解決方案和規避策略,幫助開發者構建更健壯、可預測的應用程序。 一、 @Transactional 註解:常見失效場景與優化策略 Spring
昵稱 異常君
在數據庫中,事務是保證數據一致性和可靠性的基礎。當你在網上購物、轉賬或者執行任何需要多步操作的數據庫任務時,事務機制都在背後默默保障着數據的安全。那麼,MySQL 是如何實現這一看似簡單卻又複雜的機制呢?本文將帶你深入探索 MySQL 事務的實現原理,通過生動的案例和圖表,讓你輕鬆理解這個核心概念。 什麼是事務? 事務簡單來説就是一組操作的集合,要麼全部執行成功,要麼全部失敗回滾。想象你在 ATM
昵稱 異常君
事務跟行鎖(Lock)的關係 首先解釋下事務和鎖各自的作用 事務的作用 事務主要保證一組數據庫操作(增刪改)的原子性, 即要麼全部執行成功,要麼全部失敗,避免出現數據不一致的中間狀態. 加鎖的作用 加鎖主要解決併發場景下的數據競爭問題, 比如多個請求同時修改同一條數據時,可能導致"髒讀""不可重複讀"等問題. 如果僅僅使用事務不用鎖的侷限性 事務操作雖然
昵稱 daoheng
MySQL事務詳解 什麼是事務 事務(Transaction)是數據庫操作的最小邏輯單位,是一組要麼全部成功執行要麼全部失敗回滾的操作集合。事務確保數據從一種一致性狀態轉換到另一種一致性狀態,即使在系統故障的情況下也能保持數據的完整性。 事務的ACID特性 事務必須具備ACID特性: 原子性(Atomicity):事務是一個不可分割的工作單位,要麼全部執行成功,要麼全部失敗回滾 一致性(Co
昵稱 今夜有點兒涼
數據庫允許多個客户端同時訪問。當這些客户端併發訪問數據庫中同一部分的數據時,如果沒有采取必要的隔離措施就容易造成併發一致性問題,從而破壞數據的完整性。考慮下圖的場景: 在時間點1上,var的數值是100。客户端A在時間點2的時候更新了它的值為200,但沒有提交事務。在時間點3的時候,客户端B讀取到了客户端A還未提交的數值200。但在時間點4,客户端A執行了回滾操作。那麼,對於客户端B來説,
昵稱 趙渝強老師