MySQL事務 Transaction 詳解

2021-09-10 03:53:09 字數 1116 閱讀 2835

transaction

事務:乙個最小的不可再分的工作單元;通常乙個事務對應乙個完整的業務(例如銀行賬戶轉賬業務,該業務就是乙個最小的工作單元)

乙個完整的業務需要批量的dml(insert、update、delete)語句共同聯合完成

事務只和dml語句有關,或者說dml語句才有事務。這個和業務邏輯有關,業務邏輯不同,dml語句的個數不同

關於銀行賬戶轉賬操作,賬戶轉賬是乙個完整的業務,最小的單元,不可再分————————也就是說銀行賬戶轉賬是乙個事務

以下是銀行賬戶表t_act(賬號、餘額),進行轉賬操作

actno       balance

1 500

2 100

轉賬操作:

update t_act set balance=400 where actno=1;

update t_act set balance=200 where actno=2;

以上兩台dml語句必須同時成功或者同時失敗。最小單元不可再分,當第一條dml語句執行成功後,並不能將底層資料庫中的第乙個賬戶的資料修改,只是將操作記錄了一下;這個記錄是在記憶體中完成的;當第二條dml語句執行成功後,和底層資料庫檔案中的資料完成同步。若第二條dml語句執行失敗,則清空所有的歷史操作記錄,要完成以上的功能必須借助事務。

開啟標誌:

- 任何一條dml語句(insert、update、delete)執行,標誌事務的開啟
結束標誌(提交或者回滾):

-  提交:成功的結束,將所有的dml語句操作歷史記錄和底層硬碟資料來一次同步

- 回滾:失敗的結束,將所有的dml語句操作歷史記錄全部清空

在事物進行過程中,未結束之前,dml語句是不會更改底層資料,只是將歷史操作記錄一下,在記憶體中完成記錄。只有在事物結束的時候,而且是成功的結束的時候,才會修改底層硬碟檔案中的資料

在mysql中,預設情況下,事務是自動提交的,也就是說,只要執行一條dml語句就開啟了事物,並且提交了事務

原文參考:

mysql 事務 數量 Mysql 事務

什麼是事務 不可分割的操作,比如乙個事務要修改 a 表和刪除 b 表的資料兩個操作,這兩個操作都成功,這個事務才 commit,不然 rollback 每條 sql 語句都是乙個事務 只對 dml 生效 caid 一致性 consistency 讓資料保持一定程度的合理性,比如使用者加入購物車,購物...

mysql事務機制 Mysql事務機制

mysql事務是指將資料庫從一種一致性狀態轉到另一種一致性狀態 mysql事務具有acid特性 原子性 atomicity 事務中的所有操作,要麼全部執行,要麼都不執行 一致性 consistency 事務開始和結束後,資料庫的完整性不會被破壞 隔離性 isolation 事務之間互不影響。事務的隔...

mysql事務死鎖 MySQL事務 死鎖

一 概念 多個事務在同一資源上互相占用形成迴路。這就是死鎖 基本命令 檢視是否自動提交事務 show variables like autocommit 設定事務是否自動提交 set autocommit 0 set autocommit 1 二 例子 create table user id bi...