Ful*_*oof 12 sql-server transaction tempdb-version-store snapshot-isolation
根据 Kimberly L. Tripp 的 MSDN 文章,Neal Graves 的“ SQL Server 2005 Row Versioning-Based Transaction Isolation
这在“了解行版本控制”部分中是常见的“使用行版本控制读取提交中的行版本控制”和“快照隔离中的行版本控制”部分。
进一步关于由于修改导致的行版本控制的示例仅在 SNAPSHOT 中的多个事务(T1、T2、T3)对同一记录的多次更新的上下文中给出。
如果只有一个事务多次更新记录(通过多个语句),是存储(链接)多个版本存储还是仅在拍摄快照“图像”时拍摄的一个?
好吧,这个问题的答案应该立即回答我其他未决的相关问题:
Pau*_*ite 11
如果在单个事务中对同一记录进行多次更新,则存储多少个版本?
只有一个。
对该行的第一次更新会生成一个行版本并独占锁定该行。以后对同一事务中同一行的更新不会生成新的行版本。
行版本的链表可能出现如下:
SNAPSHOT 事务中的事务 T1 读取一行并看到值“a”。
事务 T2(在任何隔离级别下)将值从“a”更新为“b”并提交。这将为值“a”生成一个行版本。
事务 T3(在任何隔离级别下)将值从“b”更新为“c”并提交。这将为值“b”生成一个行版本。此行版本链接到“a”的前一行版本。
事务 T1 通过遍历从存储在当前页 ('c') 上的值到行版本 'b' 的链接,然后返回行版本 'a' 来读取行值。
无论是否存在读取事务(在任何隔离级别),数据更改都会生成行版本。可能永远不需要这些版本,但它们仍然会生成——即使没有事务 T1,也会创建相同的版本链表。
| 归档时间: |
|
| 查看次数: |
4103 次 |
| 最近记录: |