首页 > 数据库技术 > 详细

SqlServer性能优化 提高并发性能二(九)

时间:2017-01-01 21:36:16      阅读:259      评论:0      收藏:0      [点我收藏+]

补充上一篇修改用非聚集索引:

    update Employee set age=age+1 from Employee with(index=nc_Employee_Age) where age<30

 执行计划:

技术分享

并发访问控制隔离级别:

       1.读提交:默认行为,读取时请求S锁

	set transaction isolation level read committed
	select * from Employee where age=34

       2.   脏读:读取时不请求S锁,不会受到其他X锁限制

	set transaction isolation level read uncommitted
	select * from Employee

       3. 已提交快照读:更新时将老的数据复制到 Tempdb:read_committed_snapshot

        alter database HRDB
	 set read_committed_snapshot on

 

设置成单用户模式:

技术分享

        设置事物:

	begin tran
	 update Employee set age=age+1 where age>=30

   执行语句:

select * from Employee

 技术分享

这条语句也可以执行:

select * from Employee where age>30

 这条可以执行:

update Employee set age=age+1 from Employee with(index=nc_Employee_Age) where age<30

没有复制的还是从索引或基表中读取。所以可以读取出数据 

这条不能执行:

update Employee set age=age+1 from Employee with(index=nc_Employee_Age) where age>30

 打开数据库的读提交快照。 对记录进行操作时,会把排他锁的数据放到Tempdb数据库中,访问的时候直接读出Tempdb的数据,

 

       4.可重复读:事物结束前,不释放获取的S锁,可能会形成死锁

       5. 串行化:访问的行和按顺序下一行放置范围锁,防止不必要操作与插入数据

       6. 快照:比已提交快照读取更严格,试图对修改数据应用X(排他锁),如果已发生改变,事物失败 allow_snapshot_isolation

       7. 索引对隔离级别的影响、阻塞的监视

 

SqlServer性能优化 提高并发性能二(九)

原文:http://www.cnblogs.com/sunliyuan/p/6241451.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!