防止长时间运行的"扫描"查询死锁更高优先级的用户查询

2020-09-12 10:56发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们偶尔有一些批量扫描查询,它们的优先级要低于实时用户查询。 但是当发生死锁时,ASE选择CPU使用率最低的进程作为受害者(根据P&T锁定和并发控制->死锁和并发->服务器任务死锁)。

但这与我们想要的相反,因为长时间运行的后台"扫描"查询通常具有更多的CPU。

在选择死锁受害者时,ASE是否注意任务优先级(sp_setpsexe)? (可能不是)

是否还有其他方法可以告诉ASE哪个进程应该成为死锁的首选受害者?

MSSQL具有" SET DEADLOCK_PRIORITY"选项。 只是说

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们偶尔有一些批量扫描查询,它们的优先级要低于实时用户查询。 但是当发生死锁时,ASE选择CPU使用率最低的进程作为受害者(根据P&T锁定和并发控制->死锁和并发->服务器任务死锁)。

但这与我们想要的相反,因为长时间运行的后台"扫描"查询通常具有更多的CPU。

在选择死锁受害者时,ASE是否注意任务优先级(sp_setpsexe)? (可能不是)

是否还有其他方法可以告诉ASE哪个进程应该成为死锁的首选受害者?

MSSQL具有" SET DEADLOCK_PRIORITY"选项。 只是说

付费偷看设置
发送
2条回答
huskylover
1楼-- · 2020-09-12 11:16

在设计良好的应用程序/查询中,死锁应该很少。 尤其是对于使用DOL(即DPL和DRL)锁定方案的表。

是否对表使用APL方案?

如果查询结果可以容忍某些不准确性,请使用select。 ..带有noholdlock选项用于长时间扫描查询。

HTH

Avinash

zhangjiyang1323
2楼-- · 2020-09-12 11:10

Re:在设计良好的Application/Query中死锁应该很少见

我想我的应用程序当时设计不当;)严重的是,问题来自OLTP和DSS查询的混合,因此会出现这类问题。 也许在某些备用环境中,最好只为DSS查询设置数据库的复制副本,但这不是我所生活的世界。

Re:特别是对于使用DOL(即DPL和DRL)锁定方案的表。

仅数据页锁定绝对是一个有用的选项。 可能需要在当前没有它们的某些扫描查询中添加" order by"子句(因为结果可能不再以聚簇索引的顺序返回)。 并且" order by"表扫描也必须命中索引。 但是,仍然有可能通过数据页中的锁定循环导致死锁。

我仍然认为拥有诸如deadlock_priority之类的东西将非常有用。 我在SAP"影响力"页面上的建议中写道:
https://influence.sap.com/sap/ino/#/idea/219715

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答