MySQL之事務詳解

2021-10-09 07:40:51 字數 1373 閱讀 7646

一、用途

二、條件與級別

1.事務基本要素

原子性、一致性、隔離性、永續性
乙個事務中的所有操作,要麼全部完成,要麼全部不完成

事務在執行過程中發生錯誤,會被回滾到事務開始前的狀態,就像事務從來沒執行過一樣

事務開始前和事務完成後,資料庫完整性沒有被破壞

寫入的資料完全符合所有的預設規則

資料庫允許多個併發事務同時對其資料進行讀寫和修改的能力

隔離性可防止多個事務併發執行時由於交叉執行而導致資料的不一致

事務處理結束後,對資料的修改就是永久的,即使系統故障也不會地認識
2.事務隔離級別
讀未提交

不可重複讀

可重複讀

序列化

3.事務併發問題
髒讀:

事務a讀取了事務b更新的資料,然後b回滾操作,那麼a讀取到的資料是髒資料

不可重複讀:

事務a多次讀取同一資料,事務b在事務a多次的過程中,對資料作了更新並提交,導致事務a多次讀取同一資料時,結果不一致

幻讀: 系統管理員a將資料庫中所有學生的成績從具體分數改為abcde等級,但系統管理員b在此時插入了一條具體分數的記錄,當系統管理員a改結束後發現還有一條記錄沒改過來,就好像發生了幻覺一樣

不可重複讀側重於修改,幻讀側重於新增或刪除

解決不可重複讀的問題只需要鎖住滿足條件的行,解決幻讀需要鎖表

三、方法

事務處理主要有2種方法

begin		開啟乙個事務

rollback 事務回滾、

commit 事務確認

mysql> select * from runoob_transaction_test;

//開啟事務

mysql> begin;

mysql> insert into t_people value(5

);mysql> insert into t_people value(6

);//提交事務

mysql> commit;

set autocommit=

0//禁止自動提交

set autocommit=

1//開啟自動提交

mysql> select * from t_people;

//開啟事務

mysql> begin;

mysql> insert into t_people values(7

);//回滾

mysql> rollback;

MYSQL之事務篇

在引入事務之前我們先考慮銀行轉賬的操作 從id 1的賬戶給id 2的賬戶轉賬100元 第一步 將id 1的a賬戶餘額減去100 update accounts set balance balance 100where id 1 第二步 將id 2的b賬戶餘額加上100 update accounts...

MySQL學習之事務

前言 今天學習鎖的時候講到了事務,有些都忘了,所以寫一篇隨筆來複習一下 事務是由一組sql語句組成的邏輯處理單元。事務具有以下4個特性,簡稱為事務acid屬性。acid屬性 含義原子性 atomicity 事務是乙個原子操作單元,其對資料的修改,要麼全部成功,要麼全部失敗。一致性 consisten...

mysql 事務中查詢 mysql之事務

我們為什麼要使用資料庫的事務呢?使用事務有什麼缺點呢?使用原因 保持資料的匹配和一致性。缺點 併發操作中過度使用事務影響效能,因為事務用到了鎖技術。我是李福春,今天我們來複習一下事務的特性。你可以收穫下圖中的知識點。下面我們發散一下。事務特性 原子性 要麼全部成功要麼全部失敗 一致性 保證事務的前後...