AnalyticDB for PostgreSQLは、原子性、一貫性、分離、および耐久性 (ACID) プロパティと3つの分離レベルを提供します。 AnalyticDB for PostgreSQLは、分散型大規模並列処理 (MPP) アーキテクチャを使用して、ノードを水平方向にスケーリングし、ノード間のトランザクションの一貫性を確保します。 このトピックでは、AnalyticDB for PostgreSQLでサポートされているトランザクション分離レベルとトランザクション関連の操作について説明します。
分離レベル
AnalyticDB for PostgreSQLは、次のトランザクション分離レベルをサポートしています。 デフォルトの分離レベルはREAD COMMITTEDです。
READ UNCOMMITTED: 標準のSQL構文に従います。 ただし、この分離レベルは、AnalyticDB for PostgreSQLのREAD COMMITTED分離レベルと同じように実装されます。
READ COMMITTED: 標準のSQL構文に従い、AnalyticDB for PostgreSQLのREAD COMMITTED分離レベルと同じように実装されます。
SERIALIZABLE: 標準SQL構文に従います。 ただし、この分離レベルは、AnalyticDB for PostgreSQLのREPEATABLE READ分離レベルと同じように実装されています。
サーバーレスモードのAnalyticDB for PostgreSQLは、READ COMMITTED分離レベルのみをサポートします。
例:
次のステートメントを実行して、SERIALIZABLE分離レベルでトランザクションブロックを開始します。
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;または
BEGIN;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;AnalyticDB for PostgreSQLは、トランザクションを管理するための次のSQL文を提供します。
BEGINまたはSTART: トランザクションブロックを開始します。
ENDまたはCOMMIT: トランザクションをコミットします。
ROLLBACK: 変更なしでトランザクションをロールバックします。
SAVEPOINT: トランザクション内にセーブポイントを作成します。 セーブポイントの作成後に実行されたSQL文を取り消すことができます。
ROLLBACK TO SAVEPOINT: トランザクションをセーブポイントにロールバックします。
RELEASE SAVEPOINT: トランザクションからセーブポイントを解放します。
例:
次のステートメントを実行してトランザクションにセーブポイントを作成し、セーブポイントの作成後に実行されたSQLステートメントを取り消します
BEGIN;
INSERT INTO table1 VALUES (1);
SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (2);
ROLLBACK TO SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (3);
COMMIT;この例では、値1と3が挿入されますが、値2は挿入されません。
次のステートメントを実行して、トランザクションにセーブポイントを作成し、セーブポイントをリリースします。
BEGIN;
INSERT INTO table1 VALUES (3);
SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (4);
RELEASE SAVEPOINT my_savepoint;
COMMIT;この例では、値3および4が挿入される。