OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

Verticaのトランザクション管理について

公開日:
更新日:
アーキテクチャ
#トランザクション

Verticaで利用できるトランザクション分離レベル

Verticaはトランザクションをサポートしているデータベースです。
Verticaでは、標準のANSI SQL-92の分離レベルの内、以下を使用できます。

分離レベルダーティリードファジーリードファントムリード
READ COMMITTED 発生しない発生する発生する
SERIALIZABLE発生しない発生しない発生しない

※Verticaのデフォルトの分離レベルはREAD COMMITTEDです。

残りの分離レベルについても指定することは可能ですが、それぞれ別の分離レベルに自動で置き換えられますのでご注意ください。

READ UNCOMMITTEDREAD COMMITTEDに置き換えられます
REPEATABLE READSERIALIZABLEに置き換えられます

トランザクション分離レベルの変更方法

デフォルトのトランザクション分離レベルはREAD COMMITTEDですが、必要に応じて変更が可能です。

セッション単位で分離レベルを変更する方法

dbadmin=> SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL トランザクションモード ;

例)トランザクション分離レベルをSERIALIZABLEに変更する場合

dbadmin=> SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE;

データベース単位で分離レベルを変更する方法

dbadmin=>ALTER DATABASE データベース名 SET TransactionIsolationLevel = 'トランザクションモード'

例)testデータベースのトランザクション分離レベルをSERIALIZABLEに変更する場合

dbadmin=> ALTER DATABASE test SET TransactionIsolationLevel = 'SERIALIZABLE';

現在のトランザクション分離レベルはSHOW TRANSACTION_ISOLATIONコマンドで確認できます。

dbadmin=> SHOW TRANSACTION_ISOLATION;
         name          |    setting
-----------------------+----------------
 transaction_isolation | READ COMMITTED

AUTO COMMITについて

VerticaはデフォルトではAUTO COMMIT(自動コミット)は無効になっています。
そのため、更新した内容を確定させたい場合は明示的にCOMMITを実行する必要があります。
※ただし、COPYコマンドについてはデフォルトでAUTO COMMITになります。

なお、AUTO COMMITの設定を変更したい場合は、以下のコマンドを実行することでセッションレベルでオン/オフを切り替えることができます。

dbadmin=> \set AUTOCOMMIT on
dbadmin=> \set AUTOCOMMIT off

※大文字小文字の表記は上記例の通りに入力してください。

検証バージョンについて

この記事の内容はVertica 9.1で確認しています。