MySQL事務學習

2022-04-08 19:52:36 字數 1180 閱讀 4508

mysql事務學習 --> 分布式事務

innodb儲存引擎支援xa事務,通過xa事務可以支援分布式事務的實現。分布式事務指的是允許多個獨立的事務資源(transac         tional resources)參與乙個全域性的事務中。事務資源通常是關係型資料庫系統,也可以是其它型別的資源。

全域性事務要求在其中所有參與的事務要麼全部提交,要麼全部回滾,這對於事務原有的acid要求又有了提高。另外,在使用分布式事務時候,innodb儲存引擎的事務隔離級別必須設定成serialiable。

xa事務允許不同資料庫之間的分布式事務,如:一台伺服器是mysql資料庫,一台是oracle的,又有可能還有一台是sqlserver的,只要參與全域性事務中的每個節點都支援xa事務。分布式事務可能在銀行系統的轉帳中比較常見,如乙個使用者需要從上海轉1000元到北京的乙個使用者賬號上面:

# bank ofshanghai:

updateuser_account set money=money – 10000 where user=』xiaozhang』;

# bank ofbeijing:

updateuser_account set money= money + 10000 where user=』xiaoli』;

像這種情況一定需要分布式的事務,要不都提交,要麼都回滾。在任何乙個節點出問題都會造成嚴重的結果:1 xiaozhang的帳號被扣款,但是xiaoli沒有收到錢;2 xiaozhang的帳號沒有被扣款,但是xiaoli收到錢了。

分布式事務是由乙個或者多個resource managerd,乙個事務管理器transaction manager以及乙個應用程式 application program組成。

資源管理器:提供訪問事務資源的方法,通常乙個資料庫就是乙個資源管理器。

事務管理器:協調參與全域性事務中的各個事務。需要和參與全域性事務中的資源管理器進行通訊。

應用程式:定義事務的邊界,指定全域性事務中的操作。

在mysql中的分布式事務中,資源管理器就是mysql資料庫,事務管理器為連線到mysql伺服器的客戶端。如下圖所示:

分布式事務使用兩段式提交(two-phase commit)的方式。在第乙個階段,所有參與全域性事務的節點都開始準備,告訴事務管理器它們準備好提交了。第二個階段,事務管理器告訴資源管理器執行rollback或者commit,如果任何乙個節點顯示不能commit,那麼所有的節點就得全部rollback。

mysql事務學習

mysql 事務主要用於處理操作量大,複雜度高的資料。比如說,在人員管理系統中,你刪除乙個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的資訊,如信箱,文章等等,這樣,這些資料庫操作語句就構成乙個事務!在 mysql 命令列的預設設定下,事務都是自動提交的,即執行 sql 語句後就會馬上執行...

mysql事務學習

mysql 事務主要用於處理操作量大,複雜度高的資料。比如說,在人員管理系統中,你刪除乙個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的資訊,如信箱,文章等等,這樣,這些資料庫操作語句就構成乙個事務!在 mysql 命令列的預設設定下,事務都是自動提交的,即執行 sql 語句後就會馬上執行...

MySQL 事務學習

髒讀髒寫 都是因為讀取了事務未提交時的事務回滾情況髒寫 事務a與事務b同時更新一條資料,由於其中乙個事務回滾 導致另外事務執行成功的資料不存在了。髒讀事務a還沒提交事務時事務b拿到值做了大量的操作,事務a回滾後出現的資料異常問題。不可重複讀 與可重複讀 事務a修改了值並且提交了事務 b讀取到 然後b...