并发访问:

当多个线程访问同一个资源,会产生并发性问题

并发控制与处理:

乐观并发控制:一种方式是“后来的更新者获胜”   这意味着先来的用户提交的值会在没有察觉的情况下丢失。

为记录加锁以阻止其他事物访问某些记录,是避免产生并发冲突的一种技术

悲观并发控制:

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性能优化 提高并发性能(八)的更多相关文章

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

    补充上一篇修改用非聚集索引: update Employee set age=age+1 from Employee with(index=nc_Employee_Age) where age< ...

  2. 性能优化——Web前端性能优化

    核心知识点: 1.排查网站性能瓶颈的手法:分析各个环节的日志,找出异常部分 2.Web前端:网站业务逻辑之前的部分(浏览器.图片服务.CDN) 3.优化手段 1)浏览器优化 (1)减少http请求 a ...

  3. Android App性能优化笔记之一:性能优化是什么及为什么?

    By Long Luo   周星驰的电影<功夫>里面借火云邪神之口说出了一句至理名言:“天下武功,唯快不破”. 在移动互联网时代,同样如此,留给一个公司的窗口往往只有很短的时间,如何把握住 ...

  4. 微擎开启性能优化里面的性能优化memcache内存优化及数据库读写分离

    http://www.mitusky.com/forum.php?mod=viewthread&tid=3135 [微擎 安装使用] 微擎开启性能优化里面的性能优化memcache内存优化及数 ...

  5. nginx配置优化提高并发量

    1 nginx配置优化提高并发量 worker_processes 2; 这个按照CPU的核数来决定 2 worker_connections 65535; 这个一般设置65535即可 每个进程允许的 ...

  6. web性能优化-网络传输性能优化

    浏览器工作原理:https://www.cnblogs.com/thonrt/p/10008220.html 浏览器渲染原理: https://www.cnblogs.com/thonrt/p/100 ...

  7. Web性能优化 高并发网站解决 单例 已看1

    Web性能优化分为服务器端和浏览器端两个方面. 一.浏览器端,关于浏览器端优化,分很多个方面1.压缩源码和图片JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG ...

  8. Web前端性能优化——提高页面加载速度

    前言:  在同样的网络环境下,两个同样能满足你的需求的网站,一个“Duang”的一下就加载出来了,一个纠结了半天才出来,你会选择哪个?研究表明:用户最满意的打开网页时间是2-5秒,如果等待超过10秒, ...

  9. JVM性能优化,提高Java的伸缩性

    很多程序员在解决JVM性能问题的时候,花开了很多时间去调优应用程序级别的性能瓶颈,当你读完这本系列文章之后你会发现我可能更加系统地看待这类的问题.我说过JVM的自身技术限制了Java企业级应用的伸缩性 ...

随机推荐

  1. javascript学习之Function 类型

    1.函数是对象,同样也有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定. 2.使用不带圆括号的函数名是访问函数指针,而非调用函数. 3.因为ECMAScri ...

  2. 开发一个简单的python计算器

    要求: 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4* ...

  3. Java注解入门

    注解的分类   按运行机制分:   源码注解:只在源码中存在,编译后不存在 编译时注解:源码和编译后的class文件都存在(如@Override,@Deprecated,@SuppressWarnin ...

  4. 基于PNotify的消息提示Demo(轮询)

    需求:有些任务需要定时更新,获取最新的消息,这样就需要定时轮询,再者需要一种友好的提示. 以下就是使用PNotify插件的消息提示: 1.HTML代码 <!DOCTYPE html> &l ...

  5. javascript数组的方法总结,非常实用的!

    在ES5中,一共有9个Array方法 http://kangax.github.io/compat-table/es5/ 注* 九个方法 Array.prototype.indexOfArray.pr ...

  6. js 10秒倒计时 功能

    请等待<span id=</span>秒 <script type="text/javascript"> function run(){ var s ...

  7. telnet 使用

    Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力.在终端使用者的电脑上使用telnet程序,用它连接 ...

  8. gdb注意事项

    假设我当前有文件test.cpp,要gdb调试,先shell上执行:g++ test.cpp -o test -g 1. gdb调试针对的文件是debug模式的可执行文件. 上面-g参数即加上debu ...

  9. ICEM(2)—机翼翼稍网格绘制

    有时我们需要观察翼尖涡,这就需要将机翼全部被网格包围.但是网上比较多的教程都是机翼边缘即为网格边缘,机翼位于网格内部的不多.若是直接将网格拉伸,则会产生结构和非结构网格交错的情况.下面是绘制步骤 1. ...

  10. 导航效果css

    <!doctype html> <html> <head> <meta charset="utf-8" /> <style&g ...