Locking
=======

クラスター内のさまざまな操作間の競合を防ぐため、PGDは分散ロックメカニズムを使用して、一度に1つのノードのみが特定の操作を実行できるようにします。

これは、マルチプルのノードが同じデータを同時に変更しようとする可能性がある分散環境で特に重要です。
PGD
Essentialは単一書き込みノードクラスターであるため、いつでも書き込み操作を実行できるノードが1つだけであるため、同じ方法で分散ロックを扱う必要はありません。ただし、
PGD
Expanedには複数の書き込みノードがあるため、常に分散ロックを使用して整数を保証する必要があります。

ロックの種類
------------

PGDは、数種類のロックを使用して、クラスター内のデータとリソースへの同時アクセスを管理します。

DDLロック
^^^^^^^^^

DDLデータ定義言語ロックは、テーブル、インデックス、スキーマなどのデータベースオブジェクトへのアクセスを管理するために使用されます。
DDL操作が実行されると、変更されるオブジェクトでロックが取得され、他の操作が変更を干渉しないようにします。これにより、データベースの構造の一貫性が保証され、同時DDL操作間の競合が防止されます。
:ref:`DDL Locking reference <Locking>` ドキュメントのDDLロックの詳細については、こちらをご覧ください。

DMLロック
^^^^^^^^^

DMLロックはDDLロックと密接に関連しており、
DDL操作と競合するDML操作も停止することにより、レプリケートされるDDL操作に追加の保護レイヤーを追加するために使用されます。繰り返しますが、これはマルチ書き込みノードクラスターでのみ必要であり、PGD
Essentialでは使用されません。

どのロックはいつ使用されますか?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PGDで使用されるロックは、実行される操作の種類とクラスターの構成によって異なります。通常、
DDLロックはスキーマの変更に使用され、DMLロックはデータ変更に使用されます。
PGDで使用されるロックの完全なリストは、
`DDL command handling matrix <https://www.enterprisedb.com/docs/pgd/latest/reference/ddl/ddl-command-handling>`_ ドキュメントにあります。
