怎样减少sqlserver中死锁的发生

从客观上讲,在大型数据库应用系统中,死锁问题不可能完全避免的。但是如我们有良好的编码习惯与意识,完全可以尽量减少死锁情况的发生,从而提高应用程序性能。

步骤/方法

  • 01

    尽量不要在一个事务中实现过于复杂的查询或更新操作。原因很简单,越是复杂的数据库操作,占用数据库资源的时间越长,引发死锁的可能性越大。

  • 02

    尽量不要在数据库事务中要求用户响应。原因同1,这也会导致事务长时间无法结束,浪费数据库资料。

  • 03

    死锁是由于并发访问数据库资源造成的,减少死锁就应该限制应用系统的并发访问量。我们应该合理设置后台服务的线程数,将大量数据的操作分解,分步骤,分阶段的执行。也应该避免在用户量大的时候大规模的进行后台数据库操作,应该将大规模的数据库操作放在用户量最少的时候进行。

  • 04

    尽可能以分区表或分区视图的方式拆分包含大量数据的表,将它们保存在不同的物量磁盘和文件组中。在访问数据时,可以分散访问保存在不同分区的数据,从而减少因为在大型表中放置锁而造成其它事务长时间等待的概率。

  • 05

    尽量避免使用占用很长的复杂查询,在条件允许的情况下应该尽量使用分页查询或缩小结果集的方式。因为复杂查询会长时间占用数据库资源,增加发生死锁的概率。

  • 06

    尽可能使用较低的隔离级别,如READ UNCOMMITTED,因为隔离级别低时,事务之间相互等待的情况会减少,这样每个事务都会尽可能快地完成数据库操作,然后释放其拥有的锁资源,这样就会降低出现锁等待或死锁的概率。当然,用户在设计数据库应用程序时,需要考虑如何解决事务中数据不一致的情况。

  • 07

    应该注意统一访问表的顺序,尽量避免有的事务先查询表A然后更新表B,而有的事务先查询表B再更新表A的情况。

  • 08

    如果一个事务中只进行读取数据的操作,则可以在该事务中使用快照(SNAPSHOT)隔离级别。因为在快照隔离级别中,数据库引擎不会阻塞其他事务对当前事务所占用资源的修改操作,当前事务会认为它所拥有的资源没有被修改过(实际上它所拥有的资源是一个快照)。这样就可以减少因为等待资源而产生死锁的情况。

(0)

相关推荐

  • 怎么使用SSMS将SqlServer中的表结构和数据导出备份

    如果想要将SqlServer中的数据表结构及数据同时导出进行备份,该怎么操作呢?今天就跟大家介绍一下使用SSMS将SqlServer中的表结构和数据导出备份的具体操作步骤.1. 首先打开电脑上的SSM ...

  • sqlserver中between...and结果是否包含边界值?

    sqlserver数据库中的范围查询between...and之间的边界条件是否包含在查询结果中呢? 操作方法 01 打开SQL Server Management Studio管理工具,连接上数据库 ...

  • sqlserver中char varchar nchar nvarchar的区别

    char:    固定长度,存储ANSI字符,不足的补英文半角空格. nchar:   固定长度,存储Unicode字符,不足的补英文半角空格 varchar:  可变长度,存储ANSI字符,根据数据 ...

  • win10一周年更新中设置应用发生了哪些变化?

    微软计划在8月2日发布Windows 10的最大更新,Windows 10周年更新.一个重要的更新就是新的和改进的设置应用.这个版本的设置应用具有改进的用户界面,更多的设置项也从控制面板转移过来.所以 ...

  • 如何在sqlserver中查询某张表的前10行数据

    有时候在数据库操作中需要查询按某范围的前10行数据,这里给大家介绍一下: 操作方法 01 双击sqlserver图标: 02 填写好配置信息: 03 点击新建查询: 04 输入sql语句:select ...

  • 减少布线过程中的错误和损失的注意事项

    现实中布线人员总会遇到一些不可抗拒的因素、施工大意造成的失误,这些失误会带来一系列的返工。这一系列的返工将会带来多少经济损失?据福禄克调研了全球1,110 位电缆安装人员的调查报告,其中报告中指出,因 ...

  • 在VMWare中配置SQLServer2005集群 Step by Step(五) SQLServer集群安装

    安装 SQLServer2005 集群 1. 安装MSDTC ,打开控制面板,添加删除程序,添加删除windows 组件,选择应用服务器,选择启用网络DTC 访问 2. 安装完成后,在集群管理 器中添 ...

  • MySQL、SQLServer、Oracle中设置主键自动增长

    最近由于工作关系,接触到了一些其他数据库,再加上自己以前在学校学的Oracle和MySQL数据库,发现区别是有的,今天就拿主键自动增长来说事 操作方法 01 首先先讲MySQL的设置方法,如果把表的主 ...

  • 如何预防系统进程死锁具体该怎么操作

    预防死锁的根本办法就是要使死锁产生的4个必要条件之一不存在。下面来分析一下破坏这些条件的可能性。 破坏互斥条件 破坏互斥条件即允许多个进程同时访问资源。由于多数资源的必须互斥访问这一固有特性不能改变, ...