JetDefragment2 関数

適用対象: Windows | Windowsサーバー

JetDefragment2 関数

JetDefragment2 関数は、データベース内のデータ編成を改善するデータベース最適化タスクを開始および停止します。コールバック パラメーターを使用して、最適化の進行状況を報告できます。 これは、データベース内で既存のディスク割り当てを効率的に使用することで、データベースの増加を制限するために行われます。 また、データのより密接なパックを確保することで、ワーキング セットを削減できます。 最後に、より優れたデータ編成を通じて一般的な操作を高速化することで、アプリケーションのパフォーマンスを向上させることができます。

**Windows XP:**JetDefragment2 は、Windows XP で導入されています。

JetDefragment2 には、最適化プロセスの進行状況を報告するために使用されるコールバック関数パラメーターも含まれている。

データベースの最適化はオンライン操作であり、クエリ操作やデータ更新などの通常のデータベース アクティビティを中断しない。 JetDefragment2 では、既存のすべてのデータのコピーも作成されるのではありません。 代わりに、データベースを最適化します。 最後に 、JetDefragment2 は、再使用のために内部データベース領域を回復しますが、オペレーティング システムのファイル システムに余分な領域は解放されません。

結果として得られるデータ形式は、はるかに効率的ですが、一般的には最適ではありません。 最適化は、既に論理的に削除されているデータを含む、再使用のためのデータベース ページの解放に限定されます。 また、最適化により、データベース ページが 1 つのページに収まる場合に 2 つのページのデータを組み合わせることによって、データベース ページを再使用できる場合もあります。

この操作は、読み取り専用データベースのコピーを最適な形式にする JetCompact とは異なります。

JET_ERR JET_API JetDefragment2(
  __in          JET_SESID sesid,
  __in          JET_DBID dbid,
  __in          JET_PCSTR szTableName,
  __out_opt     unsigned long* pcPasses,
  __out_opt     unsigned long* pcSeconds,
  __in          JET_CALLBACK callback,
  __in          JET_GRBIT grbit
);

パラメーター

sesid

この呼び出しに使用するセッション。

Dbid

最適化するデータベース。

szTableName

szTableName が 必要な場合や、禁止されている場合があります。

grbit szTableName
JET_bitDefragmentBTreeBatch NULLである必要があります。
JET_bitDefragmentBTree 最適化するテーブル/BTree の名前を指定します。
NULLである必要があります。

最適化は、指定されたデータベース ID によって記述されたデータベース全体に対して実行されます。

pcPasses

オンライン最適化タスクを開始するときに、この省略可能な入力パラメーターは、最適化パスの最大数を設定します。 オンライン最適化タスクを停止すると、この省略可能な出力バッファーは、実行されたパスの数に設定されます。

このパラメーターが NULL に設定されている場合、オンライン最適化パスの数は無制限です。

pcSeconds

オンライン最適化タスクを開始するときに、この省略可能な入力パラメーターは最適化の最大時間を設定します。 オンライン最適化タスクを停止すると、この省略可能な出力バッファーは、最適化に使用される時間の長さに設定されます。

このパラメーターが NULL に設定されている場合、 または pcSeconds が負の値をポイントしている場合、最適化の最大時間は無制限です。

コールバック

進行状況を報告するために最適化が定期的に呼び出されるコールバック関数。

grbit szTableName
JET_bitDefragmentBTreeBatch NULLである必要があります。
JET_bitDefragmentBTree NULLである必要があります。
省略可能。

grbit

次のオプションの 0 個以上を指定するビットのグループ。

説明

JET_bitDefragmentAvailSpaceTreesOnly

このオプションは、ESE データベース領域割り当ての使用可能な領域部分を最適化するために使用されます。 データベース領域は、所有領域と使用可能な領域の 2 つの種類に分割されます。 所有領域はテーブルまたはインデックスに割り当て、使用可能な領域はそれぞれテーブルまたはインデックス内で使用できます。 使用可能な領域は動作がはるかに動的であり、所有領域やテーブルデータやインデックス データよりもオンライン最適化が必要です。

JET_bitDefragmentBatchStart

このオプションは、新しい最適化タスクを開始するために使用されます。

JET_bitDefragmentBatchStop

このオプションは、既存の開始デフラグ タスクを停止するために使用されます。

JET_bitDefragmentBTree

このオプションは、szTableName で指定された B ツリーをデフラグするために使用されます。

JET_bitDefragmentBTreeBatch

このオプションは、データベース全体で OLD2 を呼び出す場合に使用します。

戻り値

この関数は、次 JET_ERR のいずれかの戻りコードを持つデータ型を返します。 考えられる ESE エラーの詳細については、「 Extensible Storage Engine Errors 」および「エラー処理パラメーター 」を参照してください

リターン コード

説明

JET_errSuccess

操作は正常に完了しました。

JET_errClientRequestToStopJetService

JetStopServiceの呼び出しの結果、セッションに関連付けられているインスタンスのすべてのアクティビティが停止したため、操作を完了できません。

JET_errDatabaseFileReadOnly

最適化のために選択されたデータベースは読み取り専用であり、最適化を含め、いかなる方法でも更新できません。

JET_errDistributedTransactionAlreadyPreparedToCommit

指定されたセッションはコミット準備状態であり、現在のトランザクションがコミットまたはロールバックされるまで、新しい更新を開始できません。

JET_errInstanceUnavailable

セッションに関連付けられているインスタンスで致命的なエラーが発生し、そのデータの整合性を保護するためにすべてのデータへのアクセスを取り消す必要があるという致命的なエラーが発生したため、操作を完了できません。 このエラーは、XP 以降のWindowsによってのみ返されます。

JET_errInvalidDatabaseId

指定されたデータベース ID が、 インスタンス内の既知のデータベースと一致しません。

JET_errNotInitialized

セッションに関連付けられているインスタンスがまだ初期化されていないので、操作を完了できません。

JET_errRestoreInProgress

セッションに関連付けられているインスタンスで復元操作が進行中のため、操作を完了できません。

JET_errSessionSharingViolation

同じセッションを複数のスレッドに同時に使用することはできません。 このエラーは、XP 以降のWindowsによってのみ返されます。

JET_errTermInProgress

セッションに関連付けられているインスタンスがシャットダウン中のため、操作を完了できません。

JET_errTransReadOnly

指定されたセッションには読み取り専用の特権しか与えらなく、最適化などの更新を実行できるタスクを開始することはできません。

JET_errVersionStoreOutOfMemory

このエラーは、バージョン ストアの構成済みサイズが、未処理のすべての更新プログラムを保持するには不十分な場合に発生します。

JET_wrnDefragAlreadyRunning

このJET_bitDefragmentBatchStartが渡されたが、最適化タスクが指定されたデータベースで既に最適化を実行している。

JET_wrnDefragNotRunning

JET_bitDefragmentBatchStop オプションが渡されましたが、現在、最適化タスクが実行されていません。

成功した場合、指定されたオプションを使用して、特定のデータの最適化タスクを開始するように要求された操作が実行されるか、または既存の最適化タスクを停止する操作が実行されます。

失敗した場合、オンライン最適化ジョブを開始または停止するために要求された操作は実行されません。 その他の副作用は発生しません。

解説

オンラインでの最適化は、パラメーターの設定とこの API の両方で制御されます。 既定のシステムパラメーター値は JET_OnlineDefragAll です。これは、サポートされているすべてのデータ構造に対して最適化が有効になっていることを意味します。 ただし、 JetSetSystemParameterを使用すると、オンラインでの最適化を無効にしたり、データベース領域のツリーのみ、データベースのみ、ストリーミングファイルのみ、またはこれらのオプションの組み合わせに対して選択的に有効にすることができます。 オンラインでの最適化のシステム設定が古い設定になっている場合、 JetDefragment2 は設定を JET_OnlineDefragAll として扱います。

各データベースに対して実行できるタスクは、最大で1つです。 タスクは、ESE をホストしているプロセスでスレッドとして実行されます。

最適化タスクでは、そのセッションが割り当てられるため、オンライン最適化タスクを開始するために使用されるセッションは、最適化タスクの続行中にデータベース操作に使用できます。 指定されたセッションは、タスクの開始セッションに関連付けられているアクセス許可を確認するためにのみ使用され、実際には最適化操作では使用されません。

必要条件

要件

Client

Windows Vista または Windows XP が必要です。

サーバー

Windows server 2008 または Windows server 2003 が必要です。

Header

Esent で宣言されています。

Library

ESENT を使用します。

[DLL]

ESENT.dll が必要です。

Unicode

JetDefragment2W (Unicode) とJetDefragment2A (ANSI) として実装されます。

参照

JET_ERR
JET_SESID
JetCompact
JetDefragment
JetSetSystemParameter
JetStopService