Sql Server2005提供了两种基于快照的隔离类型,他们都是利用行版本控制来维护快照的:
1、已提交读快照隔离(RCSI),通过修改数据库的一个选项来启用
alter database AdventureWorks set READ_COMMITTED_SNAPSHOT on
2、快照隔离(SI),必须在两个地方开启
A、启用数据库的ALLOW_ISOLATION_SNAPSHOT选项
alter database AdventureWorks set ALLOW_SNAPSHOT_ISOLATION on
B、通过set transaction isolation level 命令为每个想要使用SI的连接设置隔离级别
set transaction isolation level snapshot
观察数据库的状态
目录视图sys.databases包含了几个报告数据库快照隔离状态的字段.
snapshot_isolation_state字段的可能值是0到4,表示四种可能的SI状态,而snapshot_isolation_state_desc字段对每种状态作了清晰的说明:
off:数据库关闭了快照隔离状态
in_transition_to_on:数据库正处于开启SI的中间状态
on:SI被开启
in_transition_to_off:数据库正处于关闭SI的中间状态而不能启动新的快照事务
数据库选项read_committed_snapshot可能的状态值
0:关闭
1:开启
并发模型的选择
悲观并发控制时Sql Server2005中的默认设置,也是所有早期版本的唯一选择。事务的行为是由加锁来保证的,而付出的代价是产生较多的阻塞。在访问同一数据资源时,读者和写者之间会互相阻塞。由于Sql Server最初是为使用悲观并发而设计的,用户应该在证明乐观并发确实对应用程序更有用的前提下才考虑使用
在大多数情况下,基于下列原因RCSI比SI更受欢迎:
1、RCSI比SI占用更少的tempdb空间
2、RCSI支持分布式事务,而SI不支持
3、RCSI不会产生更新冲突
4、RCSI无需再应用程序端作任何修改。唯一要更改的只是一个数据库选项
可以考虑在下列情况中使用SI:
1、不太可能由于更新冲突而导致事务必须回滚得情况
2、需要基于运行时间长、能保证时间点一致性的多语句来生成报表的情况
乐观并发控制的优缺点:
优点:
1、select 操作无需获取共享锁,因此读者和写者之间不会互相阻塞
2、所有的select会得到一个始终如一的数据快照
3、与悲观并发相比,锁的需求总量大大减少了,因而将节约更多系统开销
4、Sql Server会执行较少的锁升级
5、发生死锁的可能性较小
缺点:
1、当需要扫描一个很长的版本链时,select语句的性能会有所下降
2、行版本控制需要tempdb数据库中的额外数据
3、只要数据库启用了基于快照隔离级别的某一种时,更新和删除操作都必须产生行版本
4、需要为每个受到影响的行增加大小为14个字节的行版本控制信息
5、更新操作的性能可能会因为维护行版本而变差
6、使用SI模式的更新操作可能会因为冲突检测而被回滚
7、必须小心地控制tempdb的空间
分享到:
相关推荐
"SQLSERVER快照隔离" SQL Server 2005 中引入了快照隔离(Snapshot Isolation)机制,该机制可以提供非阻碍、非锁定的读取一致性,解决了传统的读取已提交(Read Committed)事务隔离级别下的争用问题。 快照隔离...
在SQL Server 2005中,T-SQL得到了显著增强,其中一个重要方面是引入了新的数据类型。这些数据类型更加丰富且灵活,能够更好地支持现代应用程序的需求。例如: - **日期与时间**: SQL Server 2005引入了`DATE`, `...
8. **快照隔离**:快照隔离提供了一种事务一致性视图,用户可以查看数据库的某个历史状态,而不会影响其他用户的操作。这有助于提升并发性能,并减少死锁的发生。 9. **数据分割**:数据分割功能允许对大型表和索引...
7. **复制技术**:SQL Server 2005支持多种复制类型,如事务复制、合并复制和快照复制,用于数据同步和分布,保证多地数据的一致性。 在开发过程中,我们需要掌握以下几个关键概念: - **数据库设计**:包括实体...
这是因为在SQL Server 2005中,统计信息的管理方式有所改进,未更新统计信息可能会导致查询性能非最优。 若要修改兼容性级别,可以执行以下命令: ```sql EXEC sp_dbcmptlevel 'TestMe', 90; ``` 在这里,'TestMe...
SQL Server 2000主要使用两种并发控制技术:锁定和快照隔离。 1. 锁定:SQL Server 2000使用多种类型的锁,如共享锁(读锁)、排他锁(写锁)、更新锁等,来防止多个事务对同一资源的并发修改。锁定策略可以是行级...
### SQL Server 2005 高级编程:事务、快照、Reporting Services 及 Notification Services #### 一、用事务来提供安全的数据库并发 事务是数据库管理系统中用来保证数据完整性和一致性的核心概念之一。在 SQL ...
3. **事务与并发控制**:书中深入剖析了SQL Server 2008的事务管理机制,包括ACID属性、快照隔离级别和行版本控制,以及并发问题如死锁检测和避免。 4. **备份与恢复**:备份和恢复是数据库管理的重要环节,书中...
4. **安全性管理**:理解SQL Server 2005中的用户、角色和权限,如何设置登录账户、分配权限、实现数据隔离和保护。了解SQL Server的身份验证模式和加密技术。 5. **备份与恢复**:学习如何制定备份策略,执行完整...
1. **导入导出向导 (Import Export Wizard)**:在SQL Server 2005中,虽然在开始菜单中找不到这个工具,但它并未被取消。用户可以通过命令提示行输入`dtswizard`或使用Business Intelligence Development Studio中的...
### MS SQL Server 2008数据库快照详解 #### 一、快照原理与运行机制 数据库快照,作为MS SQL Server 2008的一项关键特性,提供了一种只读、静态的数据库视图,它捕捉的是数据库在某一特定时间点的状态。这种快照...
SQL Server 2005的多种特性在NASDAQ的解决方案中发挥了关键作用: 1. **存储过程**:用于实施商业规则,例如用户认证,确保交易员只能查看自己的交易数据,增强了系统安全性和数据访问控制。 2. **快照隔离**:...
8. **快照隔离**:提供了一种新的事务隔离级别,允许用户在不阻塞其他事务的情况下查看和访问数据,提高了并发处理能力和可伸缩性。 9. **数据分割**:数据分割技术允许对大型表和索引进行高效管理,通过将数据分散...
5. **支持SQL Server的新特性和改进**:包括对XML数据类型的原生支持,改进的错误处理机制,以及对大容量日志记录和快照隔离的支持。 6. **数据类型和函数的扩展**:除了基本的SQL Server数据类型,Native Client还...
事务管理是数据库系统中的重要组成部分,书中将详细介绍SQL Server 2005的事务处理机制,包括ACID属性(原子性、一致性、隔离性和持久性)的实现,事务的隔离级别(读未提交、读已提交、可重复读、串行化),以及...
在可伸缩性方面,SQL Server 2005首次引入了表分区和快照隔离等特性,并增强了对64位计算的支持。这些特性极大地改进了对超大型数据表和索引的处理能力。在易管理性方面,SQL Server 2005整合了SQL Server 2000中的...
1. 高可扩展性和可用性:SQL Server 2005引入了表分区、快照隔离等创新功能,极大地提升了数据库系统的伸缩性,这对于大型数据库系统的性能和可管理性至关重要。除此之外,SQL Server 2005还强化了24x7数据复制,...
- **复制**:解释了SQL Server 2005中的复制机制,包括合并复制、快照复制和事务复制。 通过以上知识点的学习,读者可以全面了解SQL Server 2005的基本操作及高级应用,从而能够更好地管理和开发基于SQL Server ...
SQL Server 2005提供了多种优势,如适用于数据库的全部生命周期设计、分割技术、DDL触发程序与事件通知、新的数据类型、支持ADO.NET 2.0、新功能集成、安全性的加强、新快照隔离交易等级、整合电子邮件和.NET ...