1.原子性:一個事務中全部對數據庫的操做是一個不可分割的操做序列,要麼全作要麼全不作mysql
2.一致性:數據不會由於事務的執行而遭到破壞sql
3.隔離性:一個事物的執行,不受其餘事務的干擾,即併發執行的事物之間互不干擾數據庫
4.持久性:一個事物一旦提交,它對數據庫的改變就是永久的併發
1.default:默認的事務隔離級別,跟具體的數據有關,mysql默認的事務隔離級別是repeatable_read事務
2.read_uncommitted: 讀未提交,一個事務能夠感知或者操做另一個未提交的事務,可能會出現髒讀、不可重複讀、幻讀資源
3.read_committed:讀已提交,一個事務只能感知或者操做另外一個已經提交的事務,可能會出現不可重複讀、幻讀it
4.repeatable_read:可重複讀,可以避免髒讀,不可重複讀,不能避免幻讀io
4.serializable:串行化,隔離級別最高,消耗資源最低,代價最高,可以防止髒讀, 不可重複讀,幻讀。table
一、Propagation.REQUIRED數據
調用方已經存在事務,則加入到同一個事務中運行,不然,自啓一個事務
二、Propagation.REQUIRES_NEW
不管什麼時候自身都會開啓新事務
三、Propagation.SUPPORTS
調用方存在事務,則加入到同一個事務中運行,若不存在事務,則以非事務的方式運行
四、Propagation.NOT_SUPPORTED
調用方存在事務,則會被掛起,直到被調用方運行完畢後,事務恢復。
五、Propagation.MANDATORY
調用方存在事務,則加入到同一個事務中運行,若不存在,則拋出異常
六、Propagation.NEVER
調用方存在事務,則拋出異常
七、Propagation.NESTED
若調用方存在事務,則運行一個嵌套事務,若調用方不存在事務,則以Propagation.REQUIRED的方式運行,即開啓一個新的事務