JetDefragment2 関数

適用対象: Windows |Windows Server

JetDefragment2 関数

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

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 の名前を指定します。
other NULLである必要があります。

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

pcPasses

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

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

pcSeconds

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

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

コールバック (callback)

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

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

grbit

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

説明

JET_bitDefragmentAvailSpaceTreesOnly

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

JET_bitDefragmentBatchStart

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

JET_bitDefragmentBatchStop

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

JET_bitDefragmentBTree

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

JET_bitDefragmentBTreeBatch

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

戻り値

この関数は、次のいずれかの戻りコードを 使用して、JET_ERR データ型を返します。 考えられる ESE エラーの詳細については、「 拡張ストレージ エンジン エラーエラー処理パラメーター」を参照してください。

リターン コード

説明

JET_errSuccess

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

JET_errClientRequestToStopJetService

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

JET_errDatabaseFileReadOnly

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

JET_errDistributedTransactionAlreadyPreparedToCommit

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

JET_errInstanceUnavailable

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

JET_errInvalidDatabaseId

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

JET_errNotInitialized

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

JET_errRestoreInProgress

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

JET_errSessionSharingViolation

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

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.h で宣言されています。

Library

ESENT.lib を使用します。

[DLL]

ESENT.dllが必要です。

Unicode

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

参照

JET_ERR
JET_SESID
JetCompact
JetDefragment
JetSetSystemParameter
JetStopService