【发布时间】:2014-05-15 21:34:32
【问题描述】:
数据库是否为多个客户端的事务提供 PRAM 一致性 (http://en.wikipedia.org/wiki/PRAM_consistency)。
示例: 假设我们有两个表 X 和 Y,每个表都有单条记录和单列 int 类型的值,初始设置为 0。
两个客户端连接到数据库。 客户 1 可以
BEGIN TRAN
UPDATE X SET Value = 1
COMMIT
BEGIN TRAN
UPDATE Y SET Value = 1
COMMIT
客户端 2 会
SELECT TOP 1 Value FROM Y // statement 1
SELECT TOP 1 Value FROM X // statement 2
假设,语句 1 从表 Y 中产生值 1。RDBMS(比如说 MS SQL Server)是否保证在该条件下语句 2 将始终从表 X 中产生 1?
换句话说,其他客户端是否总是会看到某个客户端提交的事务与该客户端提交的顺序相同?
更一般的问题:如果不是 PRAM,RDBMS 究竟保证了哪种类型的一致性?
【问题讨论】:
标签: sql transactions consistency