您好,登錄后才能下訂單哦!
這篇文章主要講解了“mysql事務知識點分析”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“mysql事務知識點分析”吧!
InnoDB存儲引擎支持事務,默認自提交模式,如要開啟事務,必須以begin命令開始,以commit或者rollback結束。
事務特性
l 原子性(Atomiity):要么都做,要么都不做。
l 一致性(Consistency):操作前后滿足業務規則約束。
l 隔離性(Isolation):多個并發事務互不影響。
l 持久性(Durabili):事務結束,對數據的修改是持久的。
事務開啟語句由begin或start transaction(read write|read only)命令開始,結束用commit或rollback顯示結束。
隱式提交:DDL操作或再次輸入begin和start transaction命令。
隱式回滾:退出會話、連接超時、關機等。
關閉自提交特性(set autocommit=0)
開啟自提交特性(set autocommit=1)
關閉自動提交好處:不用一個事務一次提交,多個事務一起體驕傲,提高處理能力。
關閉自提交壞處:如一事務長期不提交,導致行鎖等待,影響數據庫TPS值。
不建議關閉自提交模式。
truncate 是DDL,事務中不能回滾,會清空表的自增屬性,回到原始開始值。
delete是DML
共同點:清空表內數據,
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
RU,一個事務讀取別的事務未提交的數據。
不可重復讀:一個事務讀取到其他事務針對舊數據的修改記錄,常見(update,delte)。
幻讀:一個事務讀取到其他事務新增數據,常見(insert),允許出現在已提交事務的隔離級別中。
可重復讀是mysql默認事務隔離級別,消除臟讀、不可重復讀、幻讀等現象,很好保證事務的一致性。
如在本事務想讀取別的新增數據,可如下:
查詢:select * from t for update;
本事務提交一次:commit;
感謝各位的閱讀,以上就是“mysql事務知識點分析”的內容了,經過本文的學習后,相信大家對mysql事務知識點分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。