記事
· 2022年8月8日 3m read

テーブルデータ一括削除の際にジャーナルデータを最小限にする方法

これは InterSystems FAQ サイトの記事です。
 

テーブル(クラス) のデータを削除する際に %KillExtent() というメソッドを使用すると、レコードを1ずつ削除するのではなく、データを格納しているデータグローバル、インデックス定義のグローバル(ノード) をまとめて 削除することができます。

kill ^ISJ.xxxD
kill ^ISJ.xxxI

のようにデータグローバルやインデックスグローバルをまとめて削除するのと同じような動作となります。
そのため、ジャーナルレコードへの出力は最小限になります。


使用例:

write ##class(ISJ.xxx).%KillExtent()


ただし、トランザクション下で実行すると一括 Kill の場合でも保存されているレコードに応じたジャーナルレコードが生成されるのでご注意ください。

また、以下のドキュメントの注意書きにあるように、他クラス(テーブル)への参照などが含まれているクラスで実施されると整合性に問題が発生する場合がありますのでご注意ください。

%KillExtent() メソッド
 

こちらを必要なだけ記述したタスククラスを作成すると、タスクスケジューラから定期的に実行できます。
タスククラスの作成方法は、以下のトピックをご覧ください。

【FAQ】定期的に処理を実行する事は出来ますか?



【ご参考】

IRIS 2021.2 (メジャー/EMバージョンは 2022.1) 以降のバージョンで、ジャーナルファイルの圧縮機能 が追加されました。
このバージョン以降、非アクティブなジャーナルファイルを圧縮して保存することが可能となります。
圧縮率はおよそ 85% です。例えば、1GBのファイルサイズの場合は、150MB程度に圧縮されます。

ジャーナルファイルの圧縮は、IRIS構成ファイル(iris.cpf)[Journal] セクションの CompressFiles オプションで設定できます。
既定は「1(有効)」になっています。
InterSystems IRIS 2022.1 の新機能と機能強化について


また、圧縮されたジャーナル・ファイルを任意のアーカイブ・ロケーションにコピーできる、ジャーナル・ファイル・アーカイブ機能は 2022 のCDリリースと  2023.1 メジャーリリースで提供予定です。
ジャーナル・アーカイブ機能を有効にすると、ローカルのジャーナル・ファイルをより早くパージすることができるようになります。
アーカイブ先には、高い書き込み性能は必要ないため、低速で安価なオブジェクトストレージを選択することが可能です。


2022年3月9日に開催しました、「InterSystems Japan Virtual Summit 2022」の「ストレージの節約手法について」 のセッションでは、ジャーナル圧縮 & アーカイブの新機能について紹介しています。是非ご覧ください。

【アーカイブ配信のお知らせ】ストレージの節約手法について(2022年3月9日開催)
※16:00 ~ ジャーナリングについて
 19:00 ~ ジャーナル圧縮&アーカイブについて

ディスカッション (0)0
続けるにはログインするか新規登録を行ってください