SqlServer性能优化 提高并发性能(八)
并发访问:
当多个线程访问同一个资源,会产生并发性问题
并发控制与处理:
乐观并发控制:一种方式是“后来的更新者获胜” 这意味着先来的用户提交的值会在没有察觉的情况下丢失。
为记录加锁以阻止其他事物访问某些记录,是避免产生并发冲突的一种技术
悲观并发控制:
1.一个线程操作表,造成整个表被锁定
2.其他线程访问与操作任何记录都被阻止
3.其他线程可以添加记录
4.最小的吞吐量、最差的性能
事物恢复与检查点:

事物指南:
1.事物尽量简单
2.事物尽量只包含必要的语句;验证与查询等语句放置在事物之外
3.避免事物与用户的交互
避免锁的问题:
1.丢失的更新
2.脏读
3.不一致性分析
4.幻象集
锁的粒度:

锁的类型:

平衡乐观与悲观并发访问:
1.建立合适的索引
2.操作语句尽量放到短事物中
3.操作语句尽量指定特定的筛选条件、窄的访问列
4.索引查询提示
5.应用程序访问模式
创建表:
create table Employee(id int identity(1,1),name varchar(500),age int)
insert Employee values('caochao',34)
insert Employee values('ligang',28)
insert Employee values('zhangqing',36)
insert Employee values('huang',23)
go
begin tran
update Employee set age=age+1 where age>=30
新建一个查询窗口:
select *from Employee
访问就被阻塞掉了。没有结果。
执行删改查的方法都没什么用。
select * from Employee where age>30
select * from name,age from employee where age<30
update employee set age=age+1 where age<30
delete employee where age=20
添加是可以的:
insert Employee values('xili',50)
查看锁的命令:
sp_lock

进行回滚把锁释放:
rollback tran
没有排他锁:

创建非聚簇索引:
create nonclustered index nc_Employee_age on Employee(age) include(name)
模拟开启事物不结束:
begin tran
update Employee set age=age+1 where age>=30
锁的情况:

访问如下两个语句不行:
select *from Employee
select * from Employee where age>30
这条语句可以访问(锁住的行不能访问,不锁的是可以访问的):
select name,age from employee where age<30

在非聚集的索引页面进行了age进行了物理排序,访问的是在被锁住行排序的上面。并不需要穿透锁住的行
这句语句是不能执行的:(无法穿透>30的记录)
select * from Employee where age<20
在执行跟新语句:
update employee set age=age+1 where age<30
无法执行,查看执行计划,直接进行了表扫描:

在执行一条查询语句:执行的表扫描 不能进行查询
select * from Employee where age<30

执行删除语句:(可以) 执行的是非聚集索引
delete employee where age=20

应用索引提示的方法:
select * from employee with(index=nc_Employee_age) where age<30
查看执行计划:

update 不能用索引提示:

硬性访问: readpast 绕过被排他锁锁住的行,直接往下面进行访问
select * from Employee with(readpast)
结果:(只能访问不被锁住的)

SqlServer性能优化 提高并发性能(八)的更多相关文章
- SqlServer性能优化 提高并发性能二(九)
补充上一篇修改用非聚集索引: update Employee set age=age+1 from Employee with(index=nc_Employee_Age) where age< ...
- 性能优化——Web前端性能优化
核心知识点: 1.排查网站性能瓶颈的手法:分析各个环节的日志,找出异常部分 2.Web前端:网站业务逻辑之前的部分(浏览器.图片服务.CDN) 3.优化手段 1)浏览器优化 (1)减少http请求 a ...
- Android App性能优化笔记之一:性能优化是什么及为什么?
By Long Luo 周星驰的电影<功夫>里面借火云邪神之口说出了一句至理名言:“天下武功,唯快不破”. 在移动互联网时代,同样如此,留给一个公司的窗口往往只有很短的时间,如何把握住 ...
- 微擎开启性能优化里面的性能优化memcache内存优化及数据库读写分离
http://www.mitusky.com/forum.php?mod=viewthread&tid=3135 [微擎 安装使用] 微擎开启性能优化里面的性能优化memcache内存优化及数 ...
- nginx配置优化提高并发量
1 nginx配置优化提高并发量 worker_processes 2; 这个按照CPU的核数来决定 2 worker_connections 65535; 这个一般设置65535即可 每个进程允许的 ...
- web性能优化-网络传输性能优化
浏览器工作原理:https://www.cnblogs.com/thonrt/p/10008220.html 浏览器渲染原理: https://www.cnblogs.com/thonrt/p/100 ...
- Web性能优化 高并发网站解决 单例 已看1
Web性能优化分为服务器端和浏览器端两个方面. 一.浏览器端,关于浏览器端优化,分很多个方面1.压缩源码和图片JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG ...
- Web前端性能优化——提高页面加载速度
前言: 在同样的网络环境下,两个同样能满足你的需求的网站,一个“Duang”的一下就加载出来了,一个纠结了半天才出来,你会选择哪个?研究表明:用户最满意的打开网页时间是2-5秒,如果等待超过10秒, ...
- JVM性能优化,提高Java的伸缩性
很多程序员在解决JVM性能问题的时候,花开了很多时间去调优应用程序级别的性能瓶颈,当你读完这本系列文章之后你会发现我可能更加系统地看待这类的问题.我说过JVM的自身技术限制了Java企业级应用的伸缩性 ...
随机推荐
- php知识案列
n个不重复的随机数生成代码 <?php //range 是将1到100 列成一个数组 $numbers = range (1,100); //shuffle 将数组顺序随即打乱 shuffle ...
- chrome (failed) net::ERR_INCOMPLETE_CHUNKED_ENCODING ashx 加载图片
chrome (failed) net::ERR_INCOMPLETE_CHUNKED_ENCODING ashx文件加载图片的方法,发现在chrome浏览器里面出了异常: (failed) ne ...
- EasyUI相关
失去焦点事件 validType:'length[4,15]',events:{blur: function(){}} 添加自定义属性 $.extend($.fn.validatebox.defaul ...
- js写的闹钟,支持多个闹钟
因为玩一个游戏,该游戏可以支持多个号,每个号有好多等时间的任务. 来回切换看,太耽误时间.手机的闹钟操作太麻烦. 所以写了一个使用配置文件的闹钟,简单方便. var ForReading = 1, F ...
- POJ 3176 Cow Bowling
Cow Bowling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13016 Accepted: 8598 Desc ...
- BookRent借阅管理
最近整了个BookRent的小应用,单机版.连本地sqlite db.wpf界面,其中涉及到一些有趣的小功能和小坑,简单小结一下. 项目结构是wpf ui->view model->rep ...
- 嵌入式Linux的调试技术
本节我们研究嵌入式Linux的调试技术,对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行调试.刚开始讲了打印内核调试信息:printk,这个函数的用法与printf函数类似,只不过p ...
- python 中的高级函数filter()
filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filt ...
- Javascript DOM编程艺术 语法部分
1.变量,可以变化的东西我们称为变量,随着年龄的增大,我们的age不断变大 2.Javascript变量声明用var,可以不声明变量类型.尽量声明为一个字符串字面量. 3.弱类型:要求程序员必须明确的 ...
- asp.net初识
请求=========处理=============响应 不是服务器读网页.表单,而是我们向服务器提交数据 1.asp.net 服务器端控件是ASP.NET对HTML的封装,ASP.NET会将服务器端 ...