データベース・インデックスの再構築

BigFix Inventory が円滑に動作するためには、データベース・インデックスの再構築および統計の更新が必須です。UI 応答やデータのインポートで遅延が発生する場合は、ハードディスクのデフラグを実行し、統計を最新の状態にしてください。

バージョン 10.0.4 以降、新規インストールおよびアップグレードの場合、「<InventoryDB> 完全なデータベース・インデックス再編成」という名前の MS SQL データベースにジョブが含まれています。このジョブは、必要なインデックス保守を行います。

ジョブは以下の基準に従います。

  • スクリプトは毎日、現地時間の午前 4 時に実行されます。
  • データ・インポート (スケジュールされたインポートまたは手動インポート) が実行されている場合、ジョブはインポートが完了するのを待ってから、インデックスの再構築を試行します。ジョブは、30 分間隔で 16 回実行を試みます。待機の合計時間は 8 時間です。インポートが 8 時間後に完了しない場合、ジョブは状況ログにエラー・メッセージを残し、キューを退出します。その場合、インデックスは翌日のスケジュールされた時刻に再構築されます。
  • 「<InventoryDB> データベース・インデックスの完全再編成」という名前のインデックス再構築ジョブが既に存在する場合、スクリプトはデータを上書きせず、既存の構成が保持されます。
  • BigFix Inventory インデックス再構築ジョブを実行するには、SQLサーバー・エージェントを構成して実行する必要があります。エージェントは、オフになっている場合があります。手動でオンにする必要があります。SQL サーバー・エージェントの構成方法と始動方法については、SQL サーバー・エージェントの構成についてと SQL サーバー・エージェント・サービスの開始、停止、一時停止についてをそれぞれ参照してください。

  • 障害が発生した場合は SQL サーバー・エージェントを自動的に再始動するように設定することをお勧めします。詳しくは、『Auto Restart SQL Server Agent』を参照してください。

10.0.4 より前のバージョンの場合は、週に 1 回操作を実行してデータベースを再構築します。

以下の例は、インデックスを再構築して統計を更新する簡単な方法を示しています。ジョブによって、フラグメント化に関係なく、すべてのインデックスが再構築されます。このスクリプトでは、標準のデータベース名を TEMADB として使用しています。

      USE TEMADB
      GO
      IF EXISTS (SELECT
      *
      FROM dbo.imports
      WHERE success IS NULL)
      BEGIN
      PRINT N'CANNOT RUN index rebuild. BFI import is running!'
      PRINT N'Wait until BFI import finishes'
      END
      ELSE
      BEGIN
      DECLARE table_cursor CURSOR FOR
      SELECT
      table_schema,
      table_name
      FROM INFORMATION_SCHEMA.TABLES
      WHERE table_type = 'BASE TABLE'
      OPEN table_cursor
      DECLARE @tableName sysname
      DECLARE @tableSchema sysname
      FETCH NEXT FROM table_cursor INTO @tableSchema, @tableName
      WHILE @@fetch_status != -1
      BEGIN
      PRINT N'START alter index all on ' + @tableSchema
      + N'.' + @tableName + N' rebuild';
      EXECUTE (N'alter index all on ' + @tableSchema + N'.'
      + @tableName
      +
      N' rebuild')
      PRINT N'END alter index all on ' + @tableSchema
      + N'.' + @tableName + N' rebuild';
      FETCH NEXT FROM table_cursor INTO @tableSchema,
      @tableName
      END
      CLOSE table_cursor
      DEALLOCATE table_cursor
      PRINT N'START sp_updatestats';
      EXECUTE sp_updatestats
      PRINT N'END sp_updatestats';
      END
      GO