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 の名前を指定します。
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 エラーの詳細については、「拡張Storage エンジン エラーエラー処理パラメーター」を参照してください。

リターン コード

説明

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

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

[サーバー]

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

ヘッダー

Esent.h で宣言されています。

Library

ESENT.lib を使用します。

[DLL]

ESENT.dllが必要です。

Unicode

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

参照

JET_ERR
JET_SESID
JetCompact
JetDefragment
JetSetSystemParameter
JetStopService