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