PHP事務四大特性
#交易就是一組原子性的SQL查詢,或是說一個獨立的工作單元。
原子性(Atomicity):
交易是資料庫的邏輯工作單位,它對資料庫的修改要麼全部執行,要麼全部不執行。
一致性(Consistemcy):
交易前後,資料庫的狀態都滿足所有的完整性限制。
隔離性(Isolation):
並發執行的交易是隔離的,一個不影響一個。如果有兩個事務,運作在相同的時間內,執行相同的功能,事務的隔離性將確保每一事務在系統中認為只有該事務在使用系統。這種屬性有時稱為串列化,為了防止交易操作間的混淆,必須串行化或序列化請求,使得在同一時間僅有一個請求用於同一資料。
透過設定資料庫的隔離級別,可以達到不同的隔離效果。
持久性(Durability):
在交易完成以後,該事務所對資料庫所做的更改便持久的保存在資料庫之中,並不會被復原.
PHP事務的並發問題
1、髒讀
事務A讀取了事務B更新的數據,然後B回滾操作,那麼A讀取到的資料就是髒資料。
2、不可重複讀取
事務A 多次讀取同一數據,事務B 在事務A多次讀取的過程中,對數據進行了更新並提交,導致事務A多次讀取相同資料時,結果不一致。
3、幻讀
系統管理員A將資料庫中所有學生的成績從特定分數改為ABCDE等級,但係統管理員B就在這個時候插入了一條具體分數的記錄,當系統管理員A改結束後發現還有一筆記錄沒有改過來,就好像發生了幻覺一樣,這就叫幻讀。
小結:不可重複讀的和幻讀很容易混淆,不可重複讀取側重於修改,幻讀著重於新增或刪除。解決不可重複讀的問題只需鎖住符合條件的行,解決幻讀需要鎖定表。
推薦教學:PHP影片教學
#以上是php事務是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!