前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
事務內嵌套事務:
? 1) 都用spring事務時,取決spring采用的事務的隔離級別。
? ? 這個默認隔離級別是與具體的數據庫相關的,采取的是具體數據庫的默認隔離級別,不同的數據庫是不一樣的。
? ? 如是同一事務,事務有傳播性:
? ? 在有事務的方法A內執行修改,再于A內調用有事務的方法B執行修改同一字段,
? ? B用的是A的事務,可以拿到A手中的寫鎖,2次修改都執行成功。?
? 2) 如果方法A用spring的事務,方法B用代碼事務,是2個不同事務。
? 3) 在主線程中開子線程,并分別在主、子線程中執行修改,則是2個不同事務,
? 4) 只要是2個不同的事務,就會造成寫鎖等待。
? ? 只有當先拿到寫鎖的修改方法的事務提交或回滾后,另一個線程的修改方法才能拿到寫鎖,第2次修改才能執行。
??
? 5) 另外:read-only只讀事務作用:多條查詢SQL必須保證整體的讀一致性,
? ? 否則,在前條SQL查詢之后,后條SQL查詢之前,數據被其他用戶改變,
? ? 則該次整體的統計查詢將會出現讀數據不一致的狀態,此時,應該啟用只讀事務支持
? ??
? 6) 事務ACID四個屬性;
? ? 原子性(atomicity)、一個事務是一個不可分割的工作單位,事務中包括的操作要么都做,要么都不做。
? ? 一致性(consistency)、事務必須是使數據庫從一個一致性狀態變到另一個一致性狀態。
? ? ? ? ? ? ? ? ? ? ? ? ? 比如:A扣款了,B就收款了。
? ? 隔離性(isolation)、一個事務的執行不能被其他事務干擾,并發執行的各個事務之間不會互相干擾。
? ? 持久性(durability)、指一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。
? ? ? ? ? ? ? ? ? ? ? ? ? 接下來的其他操作或故障不應該對其有任何影響。
? ? ? ? ? ? ? ? ? ? ? ? ??
? 7) 默認隔離級別: Read Commited--------Sql Server、Oracle.?
? ? ? ? ? ? ? ? ? Repeatable Read ------- MySQL 、InnoDB存儲引擎?
? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? read committed:開啟一個事務,讀一個數據,而后再次讀,這2次可能不一樣的,
? ? ? ? ? ? ? ? ? ? 因為在這2次讀之間可能有其他事務更改這個數據,這也就是讀提交,
? ? ? ? ? ? ? ? ? ? 每次讀到的數據都是已經提交的(行級鎖,不鎖間隙)。
? ? ? ? ? ? ? ? ? read repeatable:開啟一個事務,讀一個數據,而后再次讀,這2次讀的數據是一致的(行級鎖且是鎖間隙);
? ? ? ? ? ? ? ?
? 8) 不可重復讀與幻讀的區別:
? ? 不可重復讀的重點是修改,同樣的條件,你讀取過的數據,再次讀取出來發現字段值不一樣了。
? ? 幻讀的重點在于新增或者刪除,同樣的條件,第 1 次和第 2 次讀出來的記錄總條數不一樣。
??