摘要:本文主要向大家介绍了SQLServer数据库之四个影响SQLSERVER锁的申请和释放的因素,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助。
本文主要向大家介绍了SQLServer数据库之四个影响SQLSERVER锁的申请和释放的因素,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助。
1、事务隔离级别的选定
事务隔离级别越高,隔离度就越高,并发度也就越差。如果选择了比较高的隔离级别,SQL不可避免地要申请更多的锁,持有的时间也会增加。
所以在设计应用的时候,一定要和用户谈好,尽量选择默认的隔离级别(read committed)
2、事务的长短和事务的复杂度
事务的长度和复杂度决定论这个事务在SQL内部会持续多长时间,也能决定SQL会同时在多少张表和索引上申请和持有锁。事务越简单,就越不
容易发生阻塞和死锁。所以这也必须和用户商量好,尽量避免在一个事务里做很多事情
3、从应用整体并发度考虑,单个事务一次处理的数据量不能过多
应用的性能,不单要衡量单个连接的处理速度,也要衡量在并发处理的情况下,整体的平均速度怎么样。从连接个体来讲,可能在一个事务里把
数据一次都处理掉比较快。但是如果处理的数据量很大,就会影响到其他连接同时访问同一对象。所以,如果一个应用的并发要求比较高,
就一定要严格控制单个事务处理的数据量。如果有什么事务操作需要访问或修改表格内的大量数据,最好调整到并发用户比较少的时候运行。
4、针对语句在表格上设计合适的索引
合适的索引能使SQL在读取尽可能少的数据量的前提下,把需要处理的数据找到。如果没有合适的索引,SQL在做select,update,delete的时候,
会申请比要处理的目标数据量多得多的锁,从而导致阻塞或死锁。这种情形可以通过加索引的方式提高并发度。同时,SQL在做update,insert,delete
的时候,会对有关联的所有索引都做修改,在她们上面申请锁。从这个角度讲,索引越多,产生的锁的数目也就越多,阻塞和死锁的几率也就会越高。
总结:
数据库设计员需要做的是要确保有足够的索引,防止语句做全表扫描,但是也要去掉那些对语句运行贡献不大的索引。不能随便往表格上加索引。
本文由职坐标整理并发布,希望对同学们学习SQL Server有所帮助,更多内容请关注职坐标数据库SQL Server数据库频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号