用途
该技能用于 Protheus 环境中的记录锁与死锁问题,帮助开发者与运维人员理解、诊断并预防锁相关的生产故障。Protheus 采用混合锁模型:在底层关系型数据库(PostgreSQL、MSSQL、Oracle)之上,由 DBAccess 协调工作区级别的记录锁(RecLock/MsUnlock)。锁泄漏、锁争用和死锁是生产环境中最常见的问题之一,本技能围绕这些主题提供说明与操作指引。
主要能力
技能内容覆盖以下方面:
- 锁 API 语义:RecLock、MsUnlock/MsUnlockAll、SoftLock、LockByName、TCSqlExec、BeginTran/EndTran/DisarmTransaction。
- 使用 BEGIN SEQUENCE/RECOVER 进行安全的事务作用域控制。
- 针对不同数据库引擎的实时诊断流程。
- 锁类型对照表、核心锁与事务 API、使用时机指引(见 reference.md)。
- 编写或重构加锁代码时的模式与预防措施:BEGIN SEQUENCE/RECOVER、SoftLock、事务作用域、锁顺序规则(见 patterns-prevention.md)。
- 排查实时锁争用或死锁:TopMemoStatus、MonitorActiveLocks、DBAccess 监视器、各引擎特定的 SQL 锁查询(见 diagnostics.md)。
使用方式
在以下情形可激活该技能:
- 用户报告“Record locked by user XYZ”错误。
- 需要调查并发负载下的性能下降。
- 正在编写或审查会锁定记录的代码。
- 正在设计涉及锁顺序的大数据量批处理任务。
技能附带参考文件,按需阅读:
- reference.md:始终阅读,包含锁类型表、核心锁/事务 API、使用时机指引。
- patterns-prevention.md:在编写或重构加锁代码时阅读,包含 BEGIN SEQUENCE/RECOVER、SoftLock、事务作用域、锁顺序规则。
- diagnostics.md:在调查实时锁争用或死锁时阅读,包含 TopMemoStatus、MonitorActiveLocks、DBAccess 监视器、各引擎特定的 SQL 锁查询。
适用场景
适用于 Protheus 开发与运维中与记录锁、事务和并发相关的排查与编码工作,尤其是生产环境出现锁错误、并发性能下降、批处理锁顺序设计等场景。
限制
该技能不覆盖以下内容:
- 查询设计与嵌入式 SQL 中 %nolock% 的使用(参见 query-builder)。
- 与锁定无关的一般运行时/性能调试(参见 advpl-debugging)。
- BeginSQL/EndSQL 宏语法(参见 embedded-sql)。
关于收费、价格、平台支持范围等具体信息,资料中暂未提供。