ジオデータベースの圧縮を実行すると、バージョンおよびバージョン対応登録された編集データを追跡するシステム テーブルから不要なステートと行が削除されます。
ジオデータベースの圧縮とは
圧縮を実行すると、バージョンで参照されなくなったステートが削除されるため、差分テーブルの行をビジネス テーブルに移すことができます。ジオデータベース管理者だけがジオデータベースの圧縮を実行できますが、バージョンの所有者に関係なく、圧縮処理はジオデータベース内のすべてのステートに影響を与えます。
ジオデータベースの編集が行われるにつれて、差分テーブルのサイズが大きくなり、ステートの数が増えていくため、圧縮を実行する必要があります。テーブルのサイズとステートの数が増えるにつれ、バージョンの表示や検索のたびに ArcGIS が処理しなければならないデータは増えていきます。パフォーマンスに最も大きな影響をおよぼすのは、バージョンの数ではなく、各バージョンの差分テーブルに含まれている変更の量です。各バージョンへの変更の量によって、バージョンの表示や検索のクエリ応答時間が異なる可能性があります。
データベースのパフォーマンスを維持するために、ジオデータベース管理者は定期的に圧縮を実行して、使用されなくなったデータを削除する必要があります。
ArcGIS Desktop の [圧縮] コマンド、[圧縮 (Compress)] ジオプロセシング ツール、または Python スクリプトを使用できます。
圧縮時の処理内容
圧縮では、まずメモリ内でインスタンスのステート ツリー構成が走査されます。この情報に基づいて、バージョンの系統に属していないステートをすべて削除します。ステートを削除すると、そのステートに関連付けられている差分テーブルの行もすべて削除されます。
次のステップでは、候補系統のステートが 1 つのステートにまとめられます。候補系統とは、特定バージョンのテーブルの論理表現に影響を与えずに 1 つのステートに圧縮できる、ステートのコレクションです。
最後のステップでは、必要に応じて、差分テーブルの行がベース (またはビジネス) テーブルに移されます。
圧縮処理の各ステップで、テーブルを圧縮するたびにデータベース トランザクションが開始および終了されます。トランザクションは、圧縮処理の各ステップでテーブルの整合性を確認します。
圧縮処理はトランザクション上の一貫性を維持するように設計されているため、実行中に圧縮を中止することができます。このため、圧縮処理でエラーが発生したり不意に終了したりしても、圧縮しているバージョン対応のテーブルは、どのバージョン表現に関しても論理的に正確です。圧縮を中止する理由の 1 つとして、複数のユーザーがジオデータベースに接続しているときに圧縮を実行すると、圧縮によって非常に多くのシステム リソースが消費されることが判明しています。この場合、処理を停止し、接続しているユーザーが少ないか、ユーザーが接続していないときに圧縮処理を実行します。
最長時のトランザクションに十分に対応できるサイズの論理ログを作成してください。一般的に、ジオデータベースを圧縮するときは、長時間のトランザクションが発生します。Informix onconfig ファイルの LTXHWM パラメーターで定義されているロング トランザクション上限基準点の比率に達する前に、論理ログをバック アップしておく必要があります。Informix Spatial DataBlade の振舞いを熟知している Informix の技術サポート エクスパートの同意を得ずに、LTXHWM または LTXEHWM パラメーターのどちらかを変更しないでください。ロング トランザクション上限基準点に達したために、トランザクションが終了できずにロールバックされる場合、論理ログのサイズが十分でないことを意味します。
大きなジオデータベースの圧縮中に、Informix データベースでは利用できるロックが不足することがよくあります。これを防ぐために、圧縮している間、テーブルは占有モードでロックされます。ユーザーの接続を維持したまま圧縮するには、圧縮中の排他ロックを無効にする必要があります。USE_EXCLUSIVE_LOCKING 構成パラメーターを false に設定すると、同時に接続しているユーザーが存在していても圧縮を実行できるようになります。コンフィグレーション パラメーター値の変更手順については、「コンフィグレーション キーワードの変更」をご参照ください。
ジオデータベースの完全圧縮
完全に圧縮されたジオデータベースでは、差分テーブルに行がなく、ステート ツリーは 0 になっています。ジオデータベースが完全に圧縮された場合、パフォーマンスが最適な状態になります。これを実行するには、次の手順を実行します。
- 子バージョンの大きな変更をすべてリコンサイルして、DEFAULT バージョンにポストします。ジオデータベース管理者として、リコンサイルするバージョンのデフォルトの順序を確認するには、[ジオデータベース管理] ダイアログ ボックスの [バージョン] タブにある [リコンサイルの順序] サブタブを開きます。[リコンサイルの順序] サブタブの詳細については、「バージョンのプロパティ」をご参照ください。
- 編集データをリコンサイルおよびポストしたら、バージョン自体を削除します。
- ユーザーが接続していないことを確認します。
- 圧縮処理を実行します。
各圧縮の結果は、ArcGIS Desktop の compress_log テーブルで確認できます。データベース内の versions テーブルを調べて、DEFAULT バージョンのステート ID が 0 に戻っているかどうかを確認することもできます。ステート ID が 0 で、未処理のバージョンが他に残っていない場合は、完全圧縮が完了しています。
圧縮を開始する前に、バージョンをリコンサイル、ポスト、削除し、すべてのユーザーの接続を削除することが常に可能であるとは限りません。たとえば、バージョンを使用して履歴を管理している、またはプロジェクトの設計バージョンを維持する必要がある場合、履歴バージョンと設計バージョンはステート ツリー内のステートを維持します。したがって、ジオデータベースを圧縮しても、これらのステートは削除されません。ただし完全圧縮を実行しなくても圧縮を行うことは可能であり、パフォーマンスを向上させることができます。
圧縮の頻度
ジオデータベースを圧縮する頻度は、ジオデータベースで編集作業をどれだけ行ったかによって異なります。編集の量が多い場合は、おそらく 1 日に 1 回ジオデータベースを圧縮する必要があります。編集の量が平均的または少ない場合でも、通常は週に 1 回程度ジオデータベースを圧縮します。
ジオデータベースの圧縮後の操作
圧縮が終了したら、ジオデータベースの統計情報を更新してください。ジオデータベース管理者はバージョニング システム テーブルの統計情報を更新する必要があり、個々のユーザーは編集済みのデータセットの統計情報を更新することができます。