MySQL之事務

來源:互聯網
上載者:User

標籤:aik   不執行   round   層級   isolation   ola   事務   不同   .so   

資料庫事務(Database Transaction) ,是指作為單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行。 


開啟事務:start transaction;
復原事務(如果事務提交後,不能夠復原):rollback;
提交事務:commit;

 

事務的4大特性:
1.原子性(automic):同一個事務中多組操作不能夠分割,必須是一個整體

2.一致性(consistent):事務操作前與事務操作後總量保持一致

3.隔離性(isolation):多個事務之間互不干擾

  在MySQL中事務有4種隔離等級:read uncommitted(讀取未提交的事務)、read committed(讀取已提交的事務)、repeatable read(可重複讀)、serializable(可序列化的),(層級依次升高,且層級越高對資料庫的效能影響越大)

  查看mysql軟體中的交易隔離等級:select @@tx_isolation;

  修改mysql軟體預設的隔離等級: set global transaction isolation level 隔離等級

    SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;

 

 不同的隔離等級會引發不同的問題:

  當mysql的交易隔離等級為read uncommitted時,會導致髒讀:一個事務可以讀取另一個事務未提交的資料。

  解決方案:將交易隔離等級改為read committed,SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;

 

  當mysql軟體的交易隔離等級為read committed的時候,會引發不可重複讀取:在同一事物中多次讀取的結果不一致。

  解決方案:將交易隔離等級改為repeatable read,SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;

  改為repeatable read後,若兩個事務同時進行,一個事務改變資料,另一個事務查詢的資料結果不影響,不改變,仍為改變之前的資料。

 

  當mysql軟體的交易隔離等級為repeatable read時,會導致虛讀(幻讀):

4.持久性(durable):資料一旦進入到庫中、表中,就永久存在

MySQL之事務

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.