症状
SAP ME 通过执行以下 SQL 查询导致 RESRCE 表上的 HANA 数据库锁:
从 RESRCE WHERE HANDLE =? 选择站点待更新
或者
SELECT HANDLE FROM RESRCE WHERE HANDLE ='...' 用于更新
其他条款
HANA、锁、RESRCE
原因和前提条件
该问题是由运行 SQL FOR UPDATE 查询时的 HANA 数据库锁定整个表而不是导致潜在死锁的特定行导致的。
解决方案
引入了名为“disableSelectForUpdate.resourceStatusChange”且缺省值设置为“false”的新系统设置规则。当资源状态更改时,将其设置为 "true" 将禁用 RESRCE 表的锁定。该规则仅影响 HANA 数据库,被其他数据库供应商忽略。
重要注释
对于现有数据库,请执行从站点维护重新加载初始数据以将新规则添加到系统设置维护。
影响
为应对此症状所做的代码更改会影响以下 API:ResourceProductionService.placeResourceOnHold()、ResourceConfigurationServ