SQL Server 2005 の特定のデータベース保守操作や通常のトランザクション操作を実行した後にクエリのパフォーマンスの低下が発生する可能性があります。

Bug #: 329155 (SQLBUDT)

現象

Microsoft SQL Server 2005 では、特定のデータベース保守操作や通常のトランザクション操作を実行した後クエリのパフォーマンスの低下が発生する可能性があります。などのデータベースのバックアップを復元した後は、クエリのパフォーマンスが突然低下を注意してください可能性があります。

SQL Server 2005 Service Pack 2 以降が表示されます、SQL Server エラー ログに次のようなメッセージこの問題が発生したとき。
2006-10-15 06:03:29.330 一部 'オブジェクトの計画' cachestore (プラン キャッシュの一部) は、データベースの保守または操作を再構成するため spid59 SQL Server には cachestore のフラッシュの 4 回目の定期が発生しました。

2006-10-15 06:03:29.420 いくつかのため 'SQL 計画' cachestore (プラン キャッシュの一部)、データベースの保守または操作を再構成 spid59 SQL Server には cachestore のフラッシュの 4 回目の定期が発生しました。
2006-10-15 06:03:29.420 いくつかのための 'バインドされているツリー' cachestore (プラン キャッシュの一部)、データベースの保守または操作を再構成 spid59 SQL Server には cachestore のフラッシュの 4 回目の定期が発生しました。
ただし、DBCC FREEPROCCACHE コマンドまたはプロシージャ キャッシュをフラッシュする DBCC FREESYSTEMCACHE コマンドを実行することができます。これらのコマンドのいずれかを実行して、プロシージャ キャッシュがフラッシュされると、SQL Server エラー ログに次のようなメッセージが表示されます。
2006-12-14 11:37:03.57 cachestore 'DBCC FREEPROCCACHE' または' DBCC FREESYSTEMCACHE' の操作による 'SQL 計画' cachestore (プラン キャッシュの一部) のフラッシュの 1 回目の定期を spid53 SQL Server が発生しました。
2006-12-14 11:37:03.57 cachestore 'DBCC FREEPROCCACHE' または' DBCC FREESYSTEMCACHE' の操作のための 'バインドされているツリー' cachestore (プラン キャッシュの一部) のフラッシュの 1 回目の定期を spid53 SQL Server が発生しました。
したがって、問題の原因がこの資料に記載されている問題であるかどうかを決定する SQL Server エラー ログを調べることができます。

注: この現象は、Microsoft SQL Server 2008 では発生しません。

原因

この問題は、特定のデータベース保守操作や通常のトランザクション操作は、全体のプロシージャ キャッシュをクリアするために発生します。

状況

これは仕様による動作です。

詳細

次のシナリオで特定のデータベース レベルの操作を実行すると、全体のプロシージャ キャッシュがクリアされます。
  • データベースにはなデータベース オプションが ON に設定します。ユーザー接続は、参照またはデータベースを使用して、バック グラウンド タスクとを閉じるし、自動的にデータベースをシャット ダウンします。
  • 既定のオプションのあるデータベースに対して複数のクエリを実行します。次に、データベースが削除されます。
  • ソース データベースのデータベース スナップショットは破棄されます。

    注: データベース ・ スナップショットを Microsoft SQL Server 2005 Enterprise Edition でのみ利用できます。
  • データベースの状態を変更するにはオフラインまたはオンラインにします。
  • データベースのトランザクション ログが正常に再構築します。
  • データベース バックアップを復元するとします。
  • DBCC CHECKDB ステートメントを実行するとします。

    注: SQL Server 2005 SP2 より前のバージョンの SQL Server 2005 でのみです。SQL Server 2005 SP2 またはそれ以降のバージョンをインストールした後、DBCC CHECKDB ステートメントを実行すると、全体のプロシージャ キャッシュはフラッシュされません。
  • データベースをデタッチするとします。
  • ALTER DATABASE ステートメントを実行するときは、次のオプションのいずれかのタイプを指定します。
    • オフライン
    • オンライン
    • 既定のファイル グループを変更します。
    • MODIFY_NAME
    • READ_WRITE のファイル グループを変更します。
    • 部単位で印刷します。
    • READ ONLY のファイル グループを変更します。
    • READ_ONLY
    • READ_WRITE
  • 次のサーバ ・ オプションのいずれかが RECONFIGURE ステートメントによって変更された場合は、全体のプロシージャ キャッシュがクリアされます。
    • データベースの組み合わせ所有権を越える
    • インデックスは、メモリ (KB) を作成します。
    • リモート クエリ タイムアウト (秒)
    • ユーザー オプション
    • 最大テキスト repl サイズ (B)
    • 並列処理のコストしきい値
    • 並列処理の最大限度
    • (KB) のクエリごとの最小メモリ
    • クエリの待ち時間 (秒)
    • 最小サーバー メモリ (MB)
    • 最大サーバー メモリ (MB)
    • クエリ ガバナー コスト制限
    注: 最大サーバー メモリのサーバー オプションの新しい値が 0 に設定されている場合または実際の値が変更されていない場合、プロシージャ キャッシュは消去されません。
この問題が発生した場合、SQL Server 2005 のパフォーマンス カウンターからデータを収集するパフォーマンス モニターを使用する場合、次の値に変更すること。
  • パフォーマンス オブジェクト:プロセス
    カウンター:プロセッサ時間 (%)
    インスタンス: sqlservr

    このカウンターの値が増加 CPU アクティビティが増加します。基本的には、この問題が発生した場合、全体のプロシージャ キャッシュがクリアされます。したがって、後続の要求は、キャッシュに新しいプランを生成する必要があります。この動作は若干 CPU 使用率を増加します。
  • パフォーマンス オブジェクト:SQLServer:Plan キャッシュ
    カウンター:キャッシュ オブジェクト数
    インスタンス: _ の総数

    パフォーマンス オブジェクト:SQLServer:Plan キャッシュ
    カウンター:キャッシュ ・ ページ
    インスタンス: _ の総数

    これらのカウンターの値が突然低下します。

    注: SQL Server 2005 の名前付きインスタンスの場合、パフォーマンス オブジェクトという MSSQL$インスタンス名: キャッシュを計画します。
  • パフォーマンス オブジェクト:SQLServer:SQL の統計情報
    カウンター:SQLCompilations/秒

    このカウンターの値は、この問題が発生したが大幅に増えます。

    注: SQL Server 2005 の名前付きインスタンスの場合、パフォーマンス オブジェクトという MSSQL$インスタンス名: SQL の統計情報です。
SP:CacheRemoveイベントを使用して、SQL プロファイラー トレースをキャプチャする場合は、この問題が発生したとき、次のTextData列の値とこのイベントを生成することがわかります。
「全体のプロシージャ キャッシュがフラッシュされる」
プロパティ

文書番号:917828 - 最終更新日: 2017/02/18 - リビジョン: 2

フィードバック