このページは、データおよびストラクチャーファイルの圧縮機能にアクセスする時に使用します (4Dファイルの説明参照)。
ファイルの圧縮は以下のニーズに応えるために行います:
- ファイルのサイズを減らすことと最適化: ファイルには使っていないスペースがあるかもしれません。実際、レコードやフォームなどを削除すると、それらがファイル上で占有していたスペースが空になります。4D はできる限り、こういったスペースを再利用しますが、データのサイズは可変なため、連続的に削除や変更を行うと、必然的にプログラムにとって使用不可のスペースを作り出します。大量のデータが削除された直後についても同じことが言えます: 空のスペースはそのままファイルに残ります。
データファイルのサイズと実際にデータに使われているスペースの比率をデータの使用率と呼びます。使用率が低すぎると、スペースが無駄なだけではなく、データベースパフォーマンスの低下につながります。圧縮は空きスペースを取り除き、データのストレージを再編成、最適化するために行います。
"情報 "エリアにはフラグメンテーションに関するデータが要約され、必要な操作が表示されています。MSCの情報ページの データおよびストラクチャー タブにはデータベースファイルのカレントのフラグメンテーションについて詳細情報が表示されます。
注: 圧縮はメンテナンスモードでのみ可能です。標準モードでこの操作を実行しようとすると、警告ダイアログボックスが表示され、データベースを終了してメンテナンスモードで再起動することを知らせます。ただし、データベースによって開かれていないデータファイルを圧縮することは可能です (レコードとインデックスの圧縮参照)。
データおよびストラクチャーファイルの標準 圧縮手順は全く同じです。
データまたはストラクチャーファイルの圧縮を直接開始するには、MSC ウィンドウの対応するボタンをクリックします:
データ: 
ストラクチャー: 
注:
- 圧縮はオリジナルファイルのコピーを伴うため、ファイルのあるディスクに十分なスペースがない場合、ボタンは使用不可になります。
- データベースが暗号化されている場合、圧縮には復号化と暗号化のステップが含まれるため、カレントのデータの暗号化キーが必要になります。有効なデータキーがまだ提供されていない場合、パスフレーズまたはデータキーを要求するダイアログボックスが表示されます。
この操作は、メインファイルの他、インデックスファイルもすべて圧縮します。4D はオリジナルファイルをコピーし、それをオリジナルファイルの隣に作成されたReplaced Files (Compacting)フォルダーに置きます。操作が完了すると、圧縮ファイルは自動的にオリジナルファイルと置き換えられます。データベースは即座に操作可能になります。
注:
- 元のファイルのコピー先は、上級モードを使って変更できます
- 圧縮操作を複数回実行すると、毎回新しいフォルダーが作成されます。フォルダー名は、"Replaced Files (Compacting)_1 "のようになります。
警告: 圧縮操作は毎回オリジナルファイルのコピーを伴うため、アプリケーションフォルダーのサイズが大きくなります。アプリケーションのサイズが過剰に増加しな いよう、これを考慮することが大切です (特に、4D アプリケーションがパッケージとして現れるOS Xの場合)。パッケージのサイズを小さく保つためには、パッケージ内オリジナルファイルのコピーを手動で削除することも役立ちます。
圧縮が 完了すると、4D はデータベースフォルダーのLogsフォルダーにログファイルを生成します。このファイルはXMLフォーマットで作成され、"<DatabaseName>_Repair_Log_<yyyy-mm-dd hh-mm-ss>.xml" というファイル名がつけられます。このとき:
- <DatabaseName> は拡張子を除いたストラクチャーファイル名をあらわします。例:"Invoices"
- <yyyy-mm-dd hh-mm-ss> はファイルのタイムスタンプで、メンテナンスオペレーションが開始された時刻のローカルのシステム時刻に基づいています。例:"2016-01-22 15-20-45"
このファイルを使用すると実行されたオペレーションを全て閲覧することができます。ログファイルを開くボタンをクリックすると、4Dは直近のログファイルをマシンのデフォルトブラウザ上で表示します(ログファイルを開くを参照して下さい)。
圧縮ページには、データおよびストラクチャーファイルの圧縮に関するオプションページにアクセスする時に使用できる上級>ボタンがあります:
注: データベースが暗号化されている場合、データ圧縮のアクションには復号化と暗号化のステップが含まれることに注意してください。そのためカレントのデータ暗号化キーを提供する必要があり、それがない場合にはデータ圧縮アクションは実行できません。
"レコードとインデックスの圧縮"にはカレントデータファイルのパス名と、他のデータファイルを指定するために使用する [...] ボタンが表示されます。このボタンをクリックすると標準のファイルを開くダイアログが表示され、圧縮するデータファイルを選択することができます。開かれているストラクチャーファイルと互換性のあるデータファイルを選択しなければなりません。
このダイアログボックスを受け入れると、圧縮するファイルのパス名が更新されます。
2つめの [...] ボタンを使用して元のファイルのコピーの保存先を変更できます。このオプションは特に大きなデータファイルを圧縮する際に、コピー先を他のボリュームに変更するために使用します。
このオプションが選択されていると、4Dは現在のストラクチャー定義に基づき、圧縮処理中に各テーブルのすべてのレコードを再保存します。このオプションが選択されていないと、4Dは単にディスク上のデータの並びを再構成するだけです。このオプションは以下のケースで有用です:
- データが入力された後にストラクチャー定義のフィールド型が変更された場合、例えば倍長整数型を実数型に変更したようなケースです。4Dでは (データを失うリストがあるにしても) まったく異なる型に変更することさえ可能です。例えば実数型をテキスト型にすることができます。
この場合、4Dは既に入力されたデータを遡及的に変換することはしません。データはレコードがロードされ保存される際に変換されます。このオプションを使用すればデータの変換を強制できます。
- データが入力された後にテキスト、ピクチャー、BLOBの外部保存オプションが変更された場合。これは特にデータベースをv13以前から変換し、新しいオプションを変更した場合に発生します (データをデータファイル外に保存参照)。先の型変更と同様、4Dはすでに入力されたデータを遡及的に変換しません。変換を行って新しいオプションを適用するために、このオプションを選択して圧縮を行います。
- テーブルやフィールドが削除された場合。この場合、レコードの再保存を行いながら圧縮することで、この削除された領域を圧縮することができ、ファイルサイズを減らすことができます。
注: このオプションが選択されているとすべてのインデックスが更新されます。
(レコードの強制更新を選択した場合にのみ選択可能)
このオプションを使用すると圧縮中、完全にレコードのアドレステーブルを再構築 します。これによりアドレステーブルのサイズが最適化されます。このオプションは主に大量のデータを作成し、そして削除したような場合に使用します。そう でない場合、最適化に明白な意味はありません。
このオプションを使用した場合、圧縮処理に時間がかかるようになり、さらにSAVE SETコマンドを使用して保存したセットなど、レコード番号に依存するものが無効になる点に留意してください。保存したセットはすべて削除 するよう強く推奨します。そうでなければ不正なデータセットを使用することになります。
注:
- 圧縮は、ゴミ箱に入れられたテーブルのレコードも対象となります。ゴミ箱に大量のレコードがある場合、処理が遅くなる原因となります。
- このオプションを使用すると、アドレステーブル(に伴いデータベースそのものも)カレントログファイルとの互換性を失います。次回データベースを起動した際、ログファイルは自動で保存され、新しいログファイルが作成されなければなりません。
- アドレステーブルの圧縮が必要かどうかは、総レコード数とMSCの情報ページ内にあるアドレステーブルサイズを比較することで判断することができます。
“ストラクチャーファイルを圧縮”エリアにはデータベースストラクチャーファイルのパス名と、元のファイルのコピー保存先を変更するための [...] ボタンが表示されます。
圧縮 ボタンをクリックすると即座に処理が開始されます。圧縮が完了すると、4Dはデータベースフォルダーにレポートを生成します。ログファイルを開くボタンをクリックすると、4Dはマシンのデフォルトブラウザーを使用して直近のログを表示します (ログファイルを開く参照)。