protheus-locks-deadlocks について
Protheus のロック問題を診断・予防する開発者向けのスキルです。ハイブリッドなレコードロックモデル、トランザクション範囲の管理方法、データベースエンジン別のライブ診断を説明します。
主な機能
- 01Protheus のロックモデルと API の仕様
- 02安全なトランザクション範囲のパターン
- 03ロック順序と競合の予防
- 04ロックとデッドロックのライブ診断
- 05データベース別の SQL チェック
活用シーン
- 01レコードロックエラーの調査
- 02高負荷時の競合の診断
- 03レコードロックを使うコードのレビュー
- 04ロック順序を考慮したバッチの計画
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ thalysjuvenal/ advpl-specialist --skill protheus-locks-deadlocksインストール後、Claude Code で/protheus-locks-deadlocksを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
diagnostics.mdpatterns-prevention.mdreference.md詳細
Protheus のロックとデッドロック
このスキルでは、基盤となる RDBMS(PostgreSQL、MSSQL、Oracle)上で DBAccess が調整する、Protheus のハイブリッドロックモデル(レコード単位の Workarea ロック(RecLock/MsUnlock))と、本番環境で最もよく発生する問題の一つであるロックリーク、競合、デッドロックの診断および予防方法について説明します。ロック API のセマンティクス(RecLock、MsUnlock/MsUnlockAll、SoftLock、LockByName、TCSqlExec、BeginTran/EndTran/DisarmTransaction)、BEGIN SEQUENCE/RECOVER を使った安全なトランザクションのスコープ設定、データベースエンジンごとのリアルタイム診断手順を扱います。
ユーザーから「ユーザー XYZ によってレコードがロックされています」というエラーについて報告があった場合、同時負荷下でのパフォーマンス低下を調査する必要がある場合、レコードをロックするコードを作成またはレビューしている場合、あるいはロック順序が重要となる大規模データセットのバッチジョブを設計している場合は、このスキルを有効にしてください。Embedded SQL でのクエリ設計や %nolock% の使用方法(query-builder を参照)、ロック以外の一般的なランタイム/パフォーマンスのデバッグ(advpl-debugging を参照)、BeginSQL/EndSQL マクロの構文(embedded-sql を参照)は対象外です。
| 参照ファイル | 読むタイミング |
|---|---|
| reference.md | 常に — ロックタイプの表、主要なロック/トランザクション API、用途のガイダンス |
| patterns-prevention.md | レコードをロックするコードの作成またはリファクタリング時 — BEGIN SEQUENCE/RECOVER、SoftLock、トランザクションのスコープ設定、ロック順序のルール |
| diagnostics.md | 稼働中のロック競合やデッドロックの調査時 — TopMemoStatus、MonitorActiveLocks、DBAccess モニター、エンジン固有の SQL ロッククエリ |