Adaptive Server用完了锁

2020-09-08 22:47发布

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

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


您好,

在进行数据库性能测试时,我得到了" Adaptive Server的锁用尽"性能观察。

当Adaptive Server的锁用完时,将发生此错误。

您是否具有数据库脚本或方法将帮助我们识别\分析正在获取更多锁的数据库spid?

很可能任何更新或删除语句自身都有错误的查询计划。

谢谢

Uday

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

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


您好,

在进行数据库性能测试时,我得到了" Adaptive Server的锁用尽"性能观察。

当Adaptive Server的锁用完时,将发生此错误。

您是否具有数据库脚本或方法将帮助我们识别\分析正在获取更多锁的数据库spid?

很可能任何更新或删除语句自身都有错误的查询计划。

谢谢

Uday

付费偷看设置
发送
7条回答
CJones
1楼-- · 2020-09-08 23:36

嗨,Uday,

我收到的SAP笔记很少,但是所有笔记通常都可以作为解决方法来增加锁计数。 但是请检查以下说明,如果适合您的症状和DB的发行级别,请根据SAP注释

SAP注释更新数据库补丁: https://launchpad.support.sap.com/#/notes/0002203739

https://launchpad.support.sap.com/#/notes/0001884542

https://launchpad.support.sap.com/#/notes/0002006684

https://launchpad.support.sap.com/#/notes/0001966154

Sybase KBA http://infocenter.sybase.com/help/index。 jsp?topic =/com.sybase.infocenter.dc00729.1500/html/errMessageAdvRes/BACBJHDF.htm

希望这会有所帮助。

谢谢

Pradeep

Tong__Ming
2楼-- · 2020-09-08 23:18

Uday

您有机会尝试我建议的解决方案吗?

Avinash

Tong__Ming
3楼-- · 2020-09-08 23:27

要澄清:

针对DML语句的错误计划不会导致获取大量锁(隔离级别3可能是 例外,但我想不是这样)。

糟糕的计划只会延长运行时间,并可能导致并发问题。 但是锁的数量没有增加。

因此,您需要查看批处理中的UPDATE和DELETE语句或INSERT语句的数量

为避免ASE用尽锁,请考虑配置资源 锁的数量限制

HTH

Tilman Model-Bosch
ASE开发支持上的SAP

clasier
4楼-- · 2020-09-08 23:19

在查询中有两个系统表syslock和和 sysprocesses首先需要实现。 当服务器具有大(数千/百万)个锁时,查询可能不会快速返回。 请参阅我建议的MDA表方法,以获取持有大量锁的SPID。

HTH

Avinash

落灬小鱼
5楼-- · 2020-09-08 23:16

通常,如果 ASE中的一个进程正在获取大量锁,ASE尝试"升级"(升级)为排他表锁。 但是,如果表上有冲突的锁,则该过程将继续取出更多锁,直到ASE用完锁为止。 参见:

https://help.sap.com/查看器/a08646e0736e4b4b968705079db4c5f5/16.0.3.6/en-US/a6e5d9d1bc2b1014b0669105b893d36b.html
"锁定配置和调整"

您可以使用sp_add_resource_limit限制每个进程的锁数。 单个进程将出错,而不是锁定整个ASE服务器(所有双关语都是预期的)。 语法为:

 sp_add_resource_limit NULL,NULL,"一直"," lock_count",10000 

(将所有用户可以同时打开一个会话的锁数设置为10000)

如果长时间运行的事务需要进行大量数据更新,则可能导致锁冲突问题。

祝你好运。

樱桃小丸子0093
6楼-- · 2020-09-08 23:24

从MDA表monProcessActivity和SPID,KPID和LocksHeld列开始,如果需要,您可以选择更多列。

使用LocksHeld可以将您归零

快速轮询有问题的SPID。

轮询您的ASE服务器-每分钟说一次-并记录捕获的数据作为证据。

锁可以很快被消耗掉。 例如。 从繁忙的数据行表中选择#temptable可以非常快地增加锁的数量。

我有一个Watch Dog进程,它通过LocksHeld来获取SPID,并以1M +个锁终止。

您必须征得用户的同意,才能为每个连接分配合理数量的锁-我要说的是您配置为最大锁数量的一半或3/4。

< p>然后可以将其与其他MDA表结合使用以获取确切的SQL等。

请勿使用

-syslocks进行计数,它需要具体化为tempdb。

-monLocks是一个宽表,如果锁以指数级增长,则对其进行选择将会很慢。

HTH

Avinash

一周热门 更多>