怎样减少sqlserver中死锁的发生
来源:互联网 发布:python获取上个月月份 编辑:程序博客网 时间:2024/04/30 18:29
尽量不要在一个事务中实现过于复杂的查询或更新操作。原因很简单,越是复杂的数据库操作,占用数据库资源的时间越长,引发死锁的可能性越大。
尽量不要在数据库事务中要求用户响应。原因同1,这也会导致事务长时间无法结束,浪费数据库资料。
死锁是由于并发访问数据库资源造成的,减少死锁就应该限制应用系统的并发访问量。我们应该合理设置后台服务的线程数,将大量数据的操作分解,分步骤,分阶段的执行。也应该避免在用户量大的时候大规模的进行后台数据库操作,应该将大规模的数据库操作放在用户量最少的时候进行。
尽可能以分区表或分区视图的方式拆分包含大量数据的表,将它们保存在不同的物量磁盘和文件组中。在访问数据时,可以分散访问保存在不同分区的数据,从而减少因为在大型表中放置锁而造成其它事务长时间等待的概率。
尽量避免使用占用很长的复杂查询,在条件允许的情况下应该尽量使用分页查询或缩小结果集的方式。因为复杂查询会长时间占用数据库资源,增加发生死锁的概率。
尽可能使用较低的隔离级别,如READ UNCOMMITTED,因为隔离级别低时,事务之间相互等待的情况会减少,这样每个事务都会尽可能快地完成数据库操作,然后释放其拥有的锁资源,这样就会降低出现锁等待或死锁的概率。当然,用户在设计数据库应用程序时,需要考虑如何解决事务中数据不一致的情况。
应该注意统一访问表的顺序,尽量避免有的事务先查询表A然后更新表B,而有的事务先查询表B再更新表A的情况。
如果一个事务中只进行读取数据的操作,则可以在该事务中使用快照(SNAPSHOT)隔离级别。因为在快照隔离级别中,数据库引擎不会阻塞其他事务对当前事务所占用资源的修改操作,当前事务会认为它所拥有的资源没有被修改过(实际上它所拥有的资源是一个快照)。这样就可以减少因为等待资源而产生死锁的情况。
- 怎样减少sqlserver中死锁的发生
- 如何减少SQLServer死锁发生的情况
- 减少SQLServer数据库死锁的技巧
- 如何减少SQL Server死锁发生的情况
- 如何减少SQL Server死锁发生的情况
- 如何减少SQL Server死锁发生的情况
- SqlServer中select语句引起的死锁
- 死锁发生的条件
- 死锁发生的情况
- 死锁发生的条件
- sqlserver降低锁级别,能减少死锁的可能性(当然,数据安全性会稍稍降低?)
- 怎么减少错误的发生
- 怎么捕获和记录SQL Server中发生的死锁
- 怎么捕获和记录SQL Server中发生的死锁
- 怎么捕获和记录SQL Server中发生的死锁?
- 怎么捕获和记录SQL Server中发生的死锁?
- 怎么捕获和记录SQL Server中发生的死锁?
- SQLServer的死锁
- JPA 注解
- 使用view.setSystemUiVisibility()的一点心得
- CSS鼠标样式
- 快速搞懂 SQL Server 的锁定和阻塞
- Java:关于使用Map的一些知识
- 怎样减少sqlserver中死锁的发生
- Windows Mobile开发之不同分辨率的处理与界面重新布局
- 时隔数月,密码终于找回来啦
- USB数据传输设计应用
- JS+CSS鼠标经过文字变色
- 纯net获取打开进程的窗口句柄
- .net 各种技术解释
- mysql创建存储过程
- 概念