はじめに

この記事では読み取り専用モードの変更手順と、更新可能モードに戻す手順をご紹介します。

読み取り専用モードとは?

通常、データベースは参照・更新の両方の処理が可能な状態で稼働しています。
読み取り専用モードとは、文字通り読み取りのみ許可された状態を表し、更新処理を行うことができない状態で稼働します。

読み取り専用モードで稼働させることで、誤ったデータの書き込み処理を抑えたり、更新処理によるロックの挙動を抑えてデータの参照処理を行うことができます。


読み取り専用(READ ONLY)モードへの変更手順

デフォルトのトランザクションモードを確認

まずはじめに、モードを変更する前に、デフォルトのトランザクションモードを確認します。


デフォルトはREAD WRITE(更新可能)モードであることがわかります。


トランザクションモードを変更する

以下の構文に従って、READ ONLY(読み取り専用)モードに変更します。

【構文】
ALTER DATABASE <データベース名> SET TransactionMode = ‘READ ONLY’;


読み取り専用(READ ONLY)モードに変更されたことがわかります。


動作確認

設定変更後は、新規セッションから読み取り専用(READ ONLY)モードの動作が反映されます。
別セッションから更新処理が制御されるかどうか挙動を確認してみます。


更新処理を実行したところエラーになりました。
パラメータが正常に反映され、書き込みが制御されていることがわかります。


更新可能(READ WRITE)モードへの変更手順

トランザクションモードを元に戻す

再度、READ WRITE(更新可能)モードに戻します。
この際、初めにセッションの特性を変更する必要があります。
何も実行せずに読み取り専用から変更しようとすると、以下のようなエラーが出力されますのでご注意ください。



以下SQLでセッションの特性を変更し、変更後にトランザクションモードを元に戻します。

【構文】
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED READ WRITE;



次に、以下の構文に従って、READ WRITE(更新可能)モードに変更します。

【構文】
ALTER DATABASE <データベース名> SET TransactionMode = ‘READ WRITE’;



動作確認

パラメータがもとに戻ったかどうかを確認します。



更新処理が可能かどうか確認をします。


正しくデータを更新出来たことを確認できました。


参考情報

Verticaのトランザクション管理について
http://vertica-tech.ashisuto.co.jp/transaction/

検証バージョンについて

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

更新履歴

2023/06/21 Vertica12.0用に検証バージョンを修正
2017/08/14 本記事を公開