Mysql InnoDB事務


事務的四個特性

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

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

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

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


事務的實現

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

原子性、一致性、持久性通過數據庫的redoundo來完成


隱式提交的SQL語句

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

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

2、用來隱式的修改mysql架構的操作:CREATE USERDROP USERGRANTRENAME USERREVOKESET PASSWORD

3、管理語句:ANALYZE TABLECACHE INDEXCHECK TABLELOAD INDEX INTO CACHEOPTIMIZE 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 LockInnoDB存儲引擎不會使用Gap Lock的鎖算法。


分布式事務

通過XA事務可以來支持分布式事務的實現,在使用分布式事務時,InnoDB存儲引擎必須使用SERIALIZABLE的隔離級別,查看是否啟用了XA事務支持(默認開啟)

 

在默認配置下,mysql數據庫總是自動提交的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM