mirror of
https://github.com/Vonng/ddia.git
synced 2025-04-05 15:50:09 +08:00
parent
e314f667ce
commit
9d9bfb5ba5
4
ch7.md
4
ch7.md
@ -732,7 +732,7 @@ WHERE room_id = 123 AND
|
||||
|
||||
#### 索引范围锁
|
||||
|
||||
不幸的是谓词锁性能不佳:**如果活跃事务持有很多锁,检查匹配的锁会非常耗时。**因此,大多数使用2PL的数据库实际上实现了索引范围锁(也称为**间隙锁(next-key locking)**),这是一个简化的近似版谓词锁【41,50】。
|
||||
不幸的是谓词锁性能不佳:**如果活跃事务持有很多锁,检查匹配的锁会非常耗时。**因此,大多数使用2PL的数据库实际上实现了索引范围锁(index-range locking,也称为**next-key locking**),这是一个简化的近似版谓词锁【41,50】。
|
||||
|
||||
通过使谓词匹配到一个更大的集合来简化谓词锁是安全的。例如,如果你有在中午和下午1点之间预订123号房间的谓词锁,则锁定123号房间的所有时间段,或者锁定12:00~13:00时间段的所有房间(不只是123号房间)是一个安全的近似,因为任何满足原始谓词的写入也一定会满足这种更松散的近似。
|
||||
|
||||
@ -745,7 +745,7 @@ WHERE room_id = 123 AND
|
||||
|
||||
这种方法能够有效防止幻读和写入偏差。索引范围锁并不像谓词锁那样精确(它们可能会锁定更大范围的对象,而不是维持可串行化所必需的范围),但是由于它们的开销较低,所以是一个很好的折衷。
|
||||
|
||||
如果没有可以挂载间隙锁的索引,数据库可以退化到使用整个表上的共享锁。这对性能不利,因为它会阻止所有其他事务写入表格,但这是一个安全的回退位置。
|
||||
如果没有可以挂载范围锁的索引,数据库可以退化到使用整个表上的共享锁。这对性能不利,因为它会阻止所有其他事务写入表格,但这是一个安全的回退位置。
|
||||
|
||||
|
||||
### 可串行化快照隔离
|
||||
|
@ -732,7 +732,7 @@ WHERE room_id = 123 AND
|
||||
|
||||
#### 索引範圍鎖
|
||||
|
||||
不幸的是謂詞鎖效能不佳:**如果活躍事務持有很多鎖,檢查匹配的鎖會非常耗時。**因此,大多數使用2PL的資料庫實際上實現了索引範圍鎖(也稱為**間隙鎖(next-key locking)**),這是一個簡化的近似版謂詞鎖【41,50】。
|
||||
不幸的是謂詞鎖效能不佳:**如果活躍事務持有很多鎖,檢查匹配的鎖會非常耗時。**因此,大多數使用2PL的資料庫實際上實現了索引範圍鎖(index-range locking,也稱為**next-key locking**),這是一個簡化的近似版謂詞鎖【41,50】。
|
||||
|
||||
透過使謂詞匹配到一個更大的集合來簡化謂詞鎖是安全的。例如,如果你有在中午和下午1點之間預訂123號房間的謂詞鎖,則鎖定123號房間的所有時間段,或者鎖定12:00~13:00時間段的所有房間(不只是123號房間)是一個安全的近似,因為任何滿足原始謂詞的寫入也一定會滿足這種更鬆散的近似。
|
||||
|
||||
@ -745,7 +745,7 @@ WHERE room_id = 123 AND
|
||||
|
||||
這種方法能夠有效防止幻讀和寫入偏差。索引範圍鎖並不像謂詞鎖那樣精確(它們可能會鎖定更大範圍的物件,而不是維持可序列化所必需的範圍),但是由於它們的開銷較低,所以是一個很好的折衷。
|
||||
|
||||
如果沒有可以掛載間隙鎖的索引,資料庫可以退化到使用整個表上的共享鎖。這對效能不利,因為它會阻止所有其他事務寫入表格,但這是一個安全的回退位置。
|
||||
如果沒有可以掛載範圍鎖的索引,資料庫可以退化到使用整個表上的共享鎖。這對效能不利,因為它會阻止所有其他事務寫入表格,但這是一個安全的回退位置。
|
||||
|
||||
|
||||
### 可序列化快照隔離
|
||||
|
Loading…
Reference in New Issue
Block a user