標籤:mysql
mysql事務:是一個獨立的工作單元事務必須通過ACID測試: 原子性(Atomicity):一個事務的所有操作要麼全部成功執行,要麼全部失敗後復原 一致性(Consistency):資料庫總是從一個一致性狀態轉換成另一個狀態 隔離性(Isolation):一個事務在做出的操作在提交之前,其他事務是不可見的,隔離有多種層級 持久性(Durability):一旦事務提交,其所做出的操作將永久儲存在資料庫中事務的執行流程: 啟動事務-->執行SQL語句-->提交事務-->儲存資料 啟動事務-->執行SQL語句-->復原-->資料不發生任何改變 事務的隔離等級: Read Uncommitted(讀取未提交內容)出現問題:1、2、3#不建議使用此隔離等級 Read Committed(讀提交)出現問題:2、3#大多數資料庫使用的隔離等級,效能較好 Repeatable Read(不可重複讀取) 出現問題:3#mysql預設使用的隔離等級 Serializable(序列化) #資料安全性最好,並發訪問能力最弱,可能會出現死結, 出現問題:4除非在資料要求比較嚴格的情況下,否則不建議使用 出現問題: 1、髒讀:可以讀取其他事務沒有提交的資料 2、不可重複讀取:在當前事務中沒有做出任何修改,但使用select查看資料時可能查看到不同的數 3、幻讀:在當前事務提交之前只能看見啟動事務時的資料和在當前事務中做出修改的資料, 而其他事務所做出的修改將不能看見 4、加鎖讀:如果在此事務中對錶進行修改,那麼資料庫將給做出修改的表加上表鎖, 在此事務提交之前其他事務對此表做出的操作都會阻塞 mysql> SHOW VARIABLES LIKE ‘%iso%‘;#查看當前的隔離等級 SET tx_isolation=‘參數‘#修改隔離等級 對應參數(不區分大小寫):Read-Uncommitted#1Read-Committed#2Repeatable-Read#3(預設)Serializable#4 mysql> SET GLOBAL autocommit=0;#關閉自動認可事務 mysql> START TRANSACTION#啟動事務 mysql> COMMIT#提交事務 mysql> ROLLBACK#復原 mysql交易記錄: 同交易記錄和崩潰後安全恢複可以很好的儲存資料安全 交易記錄包括:重做日誌redo和復原日誌undo,交易記錄通常比較小 Redo記錄的是已經全部完成的事務,就是執行了COMMIT的事務記錄日誌組是ib_logfile0、ib_logfile1記錄日誌組可以更加需要調整檔案數量 Undo記錄的是已部分完成並且寫入硬碟的未完成的事務 在mysq重啟後,innodb通過交易記錄將所有已完成並寫入磁碟的和未完成的事務進行同步 並將資料寫入到磁碟中完成資料庫崩潰後安全恢複 mysql> SHOW VARIABLES LIKE ‘innodb_log%‘;#查看交易記錄的相關配置 innodb_log_file_size#設定交易記錄大小innodb_log_files_in_group #設定交易記錄組檔案數量innodb_log_group_home_dir #設定交易記錄存放位置
本文出自 “自動化營運” 部落格,請務必保留此出處http://hongchen99.blog.51cto.com/12534281/1932978
mysql基礎(六)mysql事務