Open 0x171-0 opened 2 years ago
資料庫透過使用 行鎖(row-level lock) 來防止髒寫:當事務想要修改特定物件(行或文件)時,它必須首先獲得該物件的鎖。然後必須持有該鎖直到事務被提交或中止。一次只有一個事務可持有任何給定物件的鎖;如果另一個事務要寫入同一個物件,則必須等到第一個事務提交或中止後,才能獲取該鎖並繼續。
不符合 ACID 標準的系統有時被稱為 BASE,它代表 基本可用性(Basically Available),軟狀態(Soft State) 和 最終一致性(Eventual consistency)。
髒讀 - 一個事務讀取另一個事務的未被執行的寫入 在關係型資料庫中,通常基於客戶端與資料庫伺服器的 TCP 連線:在任何特定連線上,BEGIN TRANSACTION 和 COMMIT 語句之間的所有內容,被認為是同一事務的一部分。
沒有原子性,錯誤處理就要複雜得多,缺乏隔離性,就會導致併發問題
物件關係對映(ORM, object-relation Mapping) 框架不會重試中斷的事務 —— 這個錯誤通常會導致一個從堆疊向上傳播的異常,所以任何使用者輸入都會被丟棄,使用者拿到一個錯誤資訊。
ACID
可能產生的錯誤
隔離層級
ACID 事務原則
各種隔離層級,常見的有
各式各樣若隔離層級會造成的問題
What is predicate lock
What is 2PL?
2 種鎖的模式
鎖定的過程
實現串行隔離的方法
What is SSI?
What is Muilti-version concurrency control?
What is 顯示鎖定?
What is 原子寫
what is materializing conflicts?
What is deadock?