ASE锁耗尽

2020-08-25 20:30发布

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

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


以前,我有一个查询,它在一个事务中做了很多删除和插入表的操作,导致锁用完了。 所以我像这样在共享模式下添加了锁表

开始交易

在共享模式下锁定mytable表

删除mytable .....

插入mytable ....

提交交易

添加此选项后,我仍然没有锁,我不明白为什么?

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

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


以前,我有一个查询,它在一个事务中做了很多删除和插入表的操作,导致锁用完了。 所以我像这样在共享模式下添加了锁表

开始交易

在共享模式下锁定mytable表

删除mytable .....

插入mytable ....

提交交易

添加此选项后,我仍然没有锁,我不明白为什么?

付费偷看设置
发送
3条回答
追夢秋陽
1楼 · 2020-08-25 20:47.采纳回答

当事务在一个表上引起很多锁时,服务器可以执行锁升级并将页面上的锁转移到表上的锁。 这样可以减少syslock中的行,因此服务器不会耗尽锁。

如果另一个事务在表上具有锁,则无法进行锁升级,并且服务器继续获取锁,这可能导致锁用完。

您可以临时增加锁的数量,以便给您一个想法,在我的生产服务器中,"锁数量"的配置值是4500000。

您在语句中指定的是获取共享表锁,这不会阻止其他事务也在获取共享锁。

尝试以独占模式锁定表,您应该看到在进行一些页面锁定之后,服务器会将其转移到独占表锁中。

您可以在下一页上阅读有关锁升级的更多信息。

https://help .sap.com/viewer/86fcdd45cd3142af9f1b6dd75017260f/16.0.2.0/zh-CN/a8f0844ebc2b1014966de0f438cf8413.html

HTH,

Luc。

hongfeng1314
2楼-- · 2020-08-25 20:38

事务中的DELETE和INSERT语句需要互斥锁; 使用LOCK TABLE为您提供表级共享锁不会减少对受影响的行的排他锁的需求。 您应该让LOCK TABLE请求排他表锁。

-bret

me_for_i
3楼-- · 2020-08-25 20:57

嗨,史蒂芬,

您可以检查SAP注释" 2006684-错误1204 ASE的锁已用完以及3914非法的内部事务状态"

这是在ASE中运行某些命令的示例:

使用主控
go

sp_configure"锁数"
go
参数名称默认使用的内存配置值运行值单元类型
---------------- ---- ------- ------------- -------------- ------------ ---- --------
锁数10000 2344352 10000000 10000000动态数

sp_configure"最大内存",52000000
go

sp_configure"锁的数量",40000000
go

sp_configure"锁数"
go
参数名称默认使用的内存配置值运行值单元类型
---------------- ---- ------- ------------- -------------- ------------ ---- --------
锁数10000 9375722 40000000 40000000动态数

致谢

一周热门 更多>