mysql學習12:第七章:事務
1.1. 事務的特性
InnoDB儲存引擎支援事務,預設自提交模式,如要開啟事務,必須以begin命令開始,以commit或者rollback結束。
事務特性
l 原子性(Atomiity):要麼都做,要麼都不做。
l 一致性(Consistency):操作前後滿足業務規則約束。
l 隔離性(Isolation):多個併發事務互不影響。
l 永續性(Durabili):事務結束,對資料的修改是持久的。
1.2. 事務語句
事務開啟語句由begin或start transaction(read write|read only)命令開始,結束用commit或rollback顯示結束。
隱式提交:DDL操作或再次輸入begin和start transaction命令。
隱式回滾:退出會話、連線超時、關機等。
關閉自提交特性(set autocommit=0)
開啟自提交特性(set autocommit=1)
關閉自動提交好處:不用一個事務一次提交,多個事務一起體驕傲,提高處理能力。
關閉自提交壞處:如一事務長期不提交,導致行鎖等待,影響資料庫TPS值。
不建議關閉自提交模式。
1.3. truncate和delete的區別
truncate 是DDL,事務中不能回滾,會清空表的自增屬性,回到原始開始值。
delete是DML
共同點:清空表內資料,
1.4. 事務的隔離級別
SQL標準的4鍾隔離級別
n 讀未提交(read uncommitted),RU,一個事務可以讀取到其他事務未提交的資料變化,叫髒讀,生產環境不建議使用。
n 讀已提交(read committed),RC,一個事務可以讀其他事務已提交的資料變化,叫不可重複讀,是Oracle預設事務隔離級別。
n 可重複讀(repetable read),RR,一個事務中,直到事務結束前,都可以反覆讀取到事務剛開始時看到的資料,並一直不發生變化,避免了髒讀、不可重複讀、幻讀現象的發生。mysql預設事務隔離級別。
n 序列(serializable),在每個讀的資料行上都加表級共享鎖,在每次寫資料時都要加表級排他鎖。造成InnoDB的併發能力下降、大量超時和鎖競爭的發生,不建議用到生產環境。
檢視當前庫隔離級別
[mysql]>show variables like '%tx_isolation%';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| tx_isolation | REPEATABLE-READ |
+---------------+-----------------+
修改全域性或當前會話的事務隔離級別
set global|session transaction isolation level
1.5. 髒讀、不可重複讀、幻讀、可重複讀
1.5.1. 髒讀
RU,一個事務讀取別的事務未提交的資料。
1.5.2. 不可重複讀與幻讀
不可重複讀:一個事務讀取到其他事務針對舊資料的修改記錄,常見(update,delte)。
幻讀:一個事務讀取到其他事務新增資料,常見(insert),允許出現在已提交事務的隔離級別中。
1.5.3. 可重複讀
可重複讀是mysql預設事務隔離級別,消除髒讀、不可重複讀、幻讀等現象,很好保證事務的一致性。
如在本事務想讀取別的新增資料,可如下:
查詢:select * from t for update;
本事務提交一次:commit;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2219140/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 第七章 事務
- MySQL 學習筆記(一)MySQL 事務的ACID特性MySql筆記
- MySQL高階12-事務原理MySql
- [高效能MYSQL學習筆記]事務MySql筆記
- MySQL事務學習筆記(一) 初遇篇MySql筆記
- MySQL 事務、日誌、鎖、索引學習總結,MySql索引
- MySQL事務學習筆記(三) 甚歡篇MySql筆記
- MySQL事務學習筆記(二) 相識篇MySql筆記
- 深入學習MySQL事務:ACID特性的實現原理MySql
- MySQL學習系列之InnoDB下事務隔離機制MySql
- 重新學習MySQL資料庫6:淺談MySQL的中事務與鎖MySql資料庫
- mysql事務MySql
- MySQL 事務MySql
- MySQL事務(一)認識事務MySql
- MySQL 事務操作MySql
- MySQL--->事務MySql
- MySQL 三 事務MySql
- MySQL--事務MySql
- MySQL-事務MySql
- MySQL索引事務MySql索引
- MySQL資料庫學習筆記02(事務控制,資料查詢)MySql資料庫筆記
- 分散式事務~從seata例項來學習分散式事務分散式
- MySQL學習之事務隔離MySql
- mysql基礎_事務MySql
- 細談Mysql事務MySql
- MySQL事務處理MySql
- MySQL事務隔離MySql
- MySQL 事務日誌MySql
- MySQL事務與鎖MySql
- MySQL 事務和鎖MySql
- MySQL事務和鎖MySql
- MySQL 事務隔離MySql
- 【Redis 系列】redis 學習六,redis 事務處理和監控事務Redis
- 資料庫事務與 MySQL 事務總結資料庫MySql
- Laravel 第七章學習——會話管理Laravel會話
- MySQL-14.MySQL事務日誌MySql
- Mysql基礎 --- 索引+事務MySql索引
- MySQL 筆記 - 事務&鎖MySql筆記