sql-server – 我有关于死锁的数据,但我无法理解它们为什么会发
发布时间:2021-01-19 13:00:13 所属栏目:MsSql教程 来源:网络整理
导读:我在我的大型Web应用程序中收到了很多死锁. How to automatically re-run deadlocked transaction? (ASP.NET MVC/SQL Server) 在这里,我想重新运行死锁事务,但我被告知要摆脱僵局 – 它比试图赶上死锁要好得多. 所以我花了一整天的时间用SQL Profiler,设置跟
从涉及的两个SELECT决定1)使用并行计划和2)使用页面锁定显然他们对整个Users表进行端到端扫描的事实.所以问题是,正如我所预测的那样,用户上缺少索引(名称,密码)会导致查询扫描过多的数据.添加索引会将SELECT转换为Nc索引上的直接SEEK和Clustered索引上的查找,这将大大减少与UPDATE重叠的窗口.现在UPDATE几乎可以保证与所有SELECT冲突,因为每个SELECT都保证读取每一行. 添加索引将缓解当前的问题.使用快照隔离将掩盖问题,因为除非添加(名称,密码)索引,否则仍将发生端到端扫描.或者只有(姓名)可能也会起作用. 为了将来的可扩展性,更新每个页面视图上的“视图”列将不起作用.延迟更新,批量聚合计数更新,垂直分区Users表和取出Views列是可行的替代方案. (编辑:应用网_常德站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql – 如何在django中执行“最大n组”查询?
- sql-server – SQL Server包装选择…将查询插入隐式事务吗?
- sql-server – 使用FreeTDS连接到MS SQL Server:错误20002
- sql-server – 为什么这些字符在SQL Server中都是相同的?
- Sql中session阻塞怎样处理,对阻塞你了解多少?
- SQL数据操作语句你了解多少?
- sql – 如何重用SELECT,WHERE和ORDER BY子句的结果?
- sql-server – 收缩数据库和文件有什么区别?
- sql – 如何通过rails迁移设置Postgres中主键(ID)列的起始点
- 命令行 – 学习SQL艰难的方法 – 在SQL Lite 3中使用.db创建
站长推荐
热点阅读