數據庫事務和事件


事務介紹

事務主要用於處理操作量大,復雜度高的數據。比如說,在人員管理系統中,你刪除一個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等,這樣,這些數據庫操作語句就構成一個事務!

事務特性

1、原子性:事務中的所有操作,要么全部完成,要么全部不完成。
2、一致性:事務提交前和提交后,數據庫的完整性沒有被破壞。
3、隔離性:事務與事務之間是相互隔離的。
4、持久性:事務一旦被提交了,那么對數據庫中的數據,改變是永久性的。

事務現象

1、臟讀:事務在處理數據的過程中,讀取到另一個未提交事務的數據。
2、不可重復讀:事務范圍內的多次查詢卻返回了不同的結果。
3、幻讀:前后多次讀取,數據總量不一致,就像產生了幻覺一樣。

隔離級別

1、serializable:事務的執行,以序列的形式執行,性能較差,安全性賊高。
2、repeatable:事務執行的過程中,多次讀取到數據是一樣的。(Mysql默認)
3、read committed:事務執行過程中,可以讀取另一個事務修改,提交后的數據。(Oracle默認)
4、read uncommitted:事務執行過程中,可以讀取到,另一個事務修改,未提交的數據。

傳播行為

1、PROPAGATION_REQUIRED:如果當前沒有事務,就創建一個新事務,如果當前存在事務,就加入該事務,該設置是最常用的。
2、PROPAGATION_SUPPORTS:支持當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就以非事務執行。
3、PROPAGATION_MANDATORY:支持當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就拋出異常。
4、PROPAGATION_REQUIRES_NEW:創建新事務,無論當前存不存在事務,都創建新事務。
5、PROPAGATION_NOT_SUPPORTED:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
6、PROPAGATION_NEVER:以非事務方式執行,如果當前存在事務,則拋出異常。
7、PROPAGATION_NESTED:如果當前沒有事務,就創建一個新事務,如果當前存在事務,則在嵌套事務內執行。

事件介紹

事件調度器可以在指定的時刻,執行特定的任務,從而實現系統的自動化操作,而這些特定的任務就是事件,這些特定的任務通常由一些確定的SQL語句組成。事件可以使一些對數據庫,定時性的操作,不再依賴外部程序,而直接使用數據庫本身提供的功能。例如:每隔一段時間清理一些數據,或者晚上執行比較耗費CPU的查詢語句。


免責聲明!

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



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