Mysql InnoDB事務

來源:互聯網
上載者:User

事務的四個特性

1、原子性(atomicity)原子性是指整個資料庫事務是不可分割的工作單位

2、一致性(consistency)一致性指事務將資料庫從一種狀態轉變為下一種一致的狀態。在事務開始之前和事務結束之後,資料庫的完整性條件約束沒有被破壞。

3、隔離性(isolation)一個事務的影響在該事務提交之前對其他事務都不可見------這通過鎖來實現

4、持久性(durability)事務一旦提交,其結果就是永久性的

事務的實現

隔離性通過Mysql InnoDB鎖就可以實現,

原子性、一致性、持久性通過資料庫的redo和undo來完成

隱式提交的SQL語句

以下這些SQL語句會產生一個隱式的提交操作,即執行完這些語句後,會有一個隱式的COMMIT操作。

1、DDL語句:ALTER DATABASE...UPGRADE DATA DIRECTORY NAME、。。。。

2、用來隱式的修改mysql架構的操作:CREATE USER、DROP USER、GRANT、RENAME USER、REVOKE、SET PASSWORD。

3、管理語句:ANALYZE TABLE、CACHE INDEX、CHECK TABLE、LOAD INDEX INTO CACHE、OPTIMIZE TABLE 、REPAIR TABLE。

 

對於事務操作的統計

QPS:question per second,每秒請求數

TPS:transaction per second,每秒交易處理的能力

計算TPS的方法是(com_commit+com_rollback)/time,用這種方法的前提是,所有的事務必須都是顯式提交的。

事務的隔離等級

SQL標準定義的四個隔離等級為:

1、READ UNCOMMITED

2、READ COMMITED

3、REPEATABLE READ

4、SERIALIZABLE

查看當前會話的交易隔離等級

 

查看全域交易隔離等級

 

在SERIALIZBLE的交易隔離等級,InnoDB儲存引擎會對每個SELECT語句後自動加上LOCK IN SHARE MODE,即給每個讀取操作加一個共用鎖定,因此在這個交易隔離等級下,讀佔用鎖了,一致性的非鎖定讀不再予以支援,一般不再本地事務中使用SERIALIZBLE的隔離等級,SERIALIZABLE的交易隔離等級主要用於InnoDB儲存引擎的分散式交易。

在READ COMMITED的交易隔離等級下,除了唯一性的約束檢查以及外鍵約束的檢查需要Gap Lock,InnoDB儲存引擎不會使用Gap Lock的鎖演算法。

分散式交易

通過XA事務可以來支援分散式交易的實現,在使用分散式交易時,InnoDB儲存引擎必須使用SERIALIZABLE的隔離等級,查看是否啟用了XA事務支援(預設開啟)

 

在預設配置下,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.