并发访问:

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

并发控制与处理:

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

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

悲观并发控制:

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. Linux C++获取文件夹大小

    项目中要计算指定文件夹的大小.百度查到这篇文章,https://my.oschina.net/Tsybius2014/blog/330628方法可行,运行正确. 拿到我们的项目中,却遇到一些问题:程序 ...

  2. 20169212《Linux内核原理与分析》第六周作业

    视频学习 一.用户态.内核态和中断 内核态:处于高的执行级别下,代码可以执行特权指令,访问任意的物理地址,这时的CPU就对应内核态 用户态:处于低的执行级别下,代码只能在级别允许的特定范围内活动.在日 ...

  3. 深入浅出Mybatis系列(十)---SQL执行流程分析(源码篇)

    最近太忙了,一直没时间继续更新博客,今天忙里偷闲继续我的Mybatis学习之旅.在前九篇中,介绍了mybatis的配置以及使用, 那么本篇将走进mybatis的源码,分析mybatis 的执行流程, ...

  4. 面向对象cookie增删查

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  5. Java—网络技术

    1  TCP Sockets基础 Sockets是一个编程抽象概念,它是网络上与另一个应用程序通信连接的句柄.Sockets编程将用户代码与TCP/IP协议堆栈的底层实现隔离开,允许用户灵活地实现自己 ...

  6. Microsoft.Office.Interop.Excel操作Excel文件时出现的问题及解决方案

    问题描述: Microsoft.Office.Interop.Excel.Worksheet 打不开文件 Microsoft Office Excel 不能访问文件"a.xls". ...

  7. C#最齐全的上传图片方法。

    public ActionResult Upload() { string imgurl = ""; foreach (string key in Request.Files) { ...

  8. MICAPS二次开发一些功能调用

    1.调用地图并将micaps文件加载地图上 IFileBindingService fbs = ServiceLocator.Current.GetInstance< IFileBindingS ...

  9. Linux系统Vsftp 传文件出现 553 Could Not Create File错误的解决方法

    解决方法: 登录出现了这个错误提示:553 Could not create file SELinux设置如下 查看SELinux设置 [root@localhost ~]# getsebool -a ...

  10. android两种基本联网方式与一种第三方开源项目的使用

    安卓请求网络的三种方式 在请求网络的时候一般常用的提交方式是post或者get请求,post请求安全,传输大小无限制,但是代码量多些,get请求是浏览器有大小限制,用户提交的信息在浏览器的地址栏显示出 ...