事務是什麼?
事務是針對數據庫數據的一系列操作,數據庫應用系統通過事務集來完成對數據的存取。
事務有什麼用?
事物是爲了保證數據的一致性和完成性而存在的,實際上就是控制數據安全訪問。
事務有哪些特性?
事務有ACID4種特性,分別爲:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)
原子性:指對數據的操作要麼全部成功,要麼全部失敗。
一致性:指事務執行前後,數據狀態保持一致。
隔離性:指一個事務的處理不能影響到另一個事務的處理。
持久性:指事務處理結束後,其效果在數據庫中是持久化的。
事務併發可能會引發那些問題?
髒讀:一個事務讀取到了另一個事務未提交的數據。
不可重複讀:一個事務的操作導致另一個事務前後兩次讀取的數據不一樣。
幻讀:一個事務的操作導致另一個事務前後兩次查詢的數據量不同。
爲了解決以上問題事務設置哪些隔離級別?
爲了解決事務併發引發的問題事務設置了4中隔離級別以解決各種問題,分別如下:
1.READ_UNCOMMITTED 讀未提交,這個級別的隔離機制無法解決髒讀、不可重複讀、幻讀等問題。
2.READ_COMMITTED 讀提交,這個隔離級別可以解決髒讀問題,但不能解決不可重複讀和幻讀問題。
3.REPEATABLE_READ 重複讀,這個隔離級別可以解決髒讀和不可重複讀的問題,但仍然無法解決幻讀問題。
4.SERIALIZABLE 串行化,這個是最高級別,可以解決以上三個可能出現的問題。
MySQL的默認隔離級別可以用 select @@tx_isolation;來查看,一般默認是REPEATABLE_READ。
spring事務的開啓方式有幾種?
有兩種:編程式和聲明式
編程式是程序中以寫代碼的形式進行事務的開啓。
聲明式是這xml配置文件中配置開啓。