事務的四大特征
1.原子性:一個事務中所有對數據庫的操作是一個不可分割的操作序列,要么全做要么全不做
2.一致性:數據不會因為事務的執行而遭到破壞
3.隔離性:一個事物的執行,不受其他事務的干擾,即並發執行的事物之間互不干擾
4.持久性:一個事物一旦提交,它對數據庫的改變就是永久的
五個隔離級別
1.default:默認的事務隔離級別,跟具體的數據有關,mysql默認的事務隔離級別是repeatable_read
2.read_uncommitted: 讀未提交,一個事務可以感知或者操作另外一個未提交的事務,可能會出現臟讀、不可重復讀、幻讀
3.read_committed:讀已提交,一個事務只能感知或者操作另一個已經提交的事務,可能會出現不可重復讀、幻讀
4.repeatable_read:可重復讀,能夠避免臟讀,不可重復讀,不能避免幻讀
4.serializable:串行化,隔離級別最高,消耗資源最低,代價最高,能夠防止臟讀, 不可重復讀,幻讀。
七個傳播特性
1、Propagation.REQUIRED
調用方已經存在事務,則加入到同一個事務中運行,否則,自啟一個事務
2、Propagation.REQUIRES_NEW
無論何時自身都會開啟新事務
3、Propagation.SUPPORTS
調用方存在事務,則加入到同一個事務中運行,若不存在事務,則以非事務的方式運行
4、Propagation.NOT_SUPPORTED
調用方存在事務,則會被掛起,直到被調用方運行完畢后,事務恢復。
5、Propagation.MANDATORY
調用方存在事務,則加入到同一個事務中運行,若不存在,則拋出異常
6、Propagation.NEVER
調用方存在事務,則拋出異常
7、Propagation.NESTED
若調用方存在事務,則運行一個嵌套事務,若調用方不存在事務,則以Propagation.REQUIRED的方式運行,即開啟一個新的事務
