ユーティリティまたは CPU 周波数を変更するテクノロジを使用すると SQL Server のタイミング値が正しくない可能性します。

文書翻訳 文書翻訳
文書番号: 931279
すべて展開する | すべて折りたたむ

目次

概要

Microsoft SQL Server 2005年、高解像度の CPU カウンターを使用して、マイクロ秒のタイミング機能を提供します。マイクロは、1 millionth、2 つ目の (1/1000 ミリ秒) です。ただし、SQL Server タイミング値は CPU 周波数を変更するテクノロジを使用する場合は正しくないことがあります。たとえば、いずれか、以下のテクノロジを使用するとこの問題が発生する可能性があります。
  • CPU のステッピング
  • AMD の Cool'n'Quiet テクノロジ
  • さまざまな電源の設定
この資料でには、メソッドと、この問題を回避するのに、追加の情報が含まれます。

現象

サーバーの実行、解析、コンパイル時間を表示するのには、時間の統計を設定ステートメントを使用すると、不適切な値を取得する可能性があります。たとえば、SQL Server の実行に時間の経過、CPU 時間よりもより多くであることがあります。この問題は、パフォーマンス ・ チューニングの精度に影響可能性があります。この問題は、記載されているテクノロジの 1 つを使用して「概要」セクションで、サーバー場合に発生します。

原因

この問題はこれらのテクノロジを使用すると CPU 周波数が変更されるために発生します。SQL Server 2005 はマイクロ秒のタイミング機能を提供するのに高解像度の CPU カウンターを使用します。エネルギーを節約し、発熱を軽減するには、CPU 周波数が変更されると、計算される期間が正しくない可能性があります。

解決方法

サービス パックの情報

この問題を解決するには、SQL Server 2005 の最新の service pack を入手します。詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
913089 SQL Server 2005 の最新の service pack を入手する方法
メモ SQL Server 2005 Service Pack 3 およびそれ以降のサービス パックでは、プロセッサのタイム ・ スタンプは使用されません。これらのバージョンの SQL Server 2005 は、1 ミリ秒、最大有効桁数を持つより信頼性の高いタイマーを使用します。

状況

この問題は SQL Server 2005 Service Pack 3 で修正されました。

回避策

SQL Server 2005 には、正確なパフォーマンス ・ チューニングを実行するために正常で安定した計測が必要です。CPU 周波数の動的な調整が有効になっている場合は、Cpu を監視し、SQL Server のパフォーマンスのチューニングを開始する前に一定の周波数を維持するため、無効できます。これを行うには、以下の方法を使用します。

Cpu の最大周波数を維持するようにコンピューターの電源設定を構成します。

これを行うには、次の手順を実行します。
  1. クリックしてください。 開始をクリックして 実行、タイプ Powercfg.cpl、し [OK].
  2. で、 電源オプションのプロパティ ダイアログ ボックス、クリックして 常にオン で、 電源設定 リストです。
  3. クリックしてください。 [OK].
ドリフトは、発生します。ドリフトは CPU 頻度値の間の相違です。詳細については、「ドリフト」を参照してください。ここでは、電源設定を変更すると、すべての Cpu の周波数を再同期するのには、Microsoft Windows を再起動してください。

コンピューターを再起動できない場合は、SQL Server ワーカー スレッド Cpu 間で移動できないようにするのには、SQL Server プロセッサのアフィニティを有効にします。これを行うと、CPU 頻度値の間での相違が発生した場合でも、コンピューターを再起動する必要はありません。サーバー上のすべての Cpu を SQL Server プロセッサのアフィニティを有効にするには、サーバー上にある論理プロセッサの数によっては、別のマスクを使用する必要があります。

シナリオの例を次に示します。
元に戻す全体を表示する
CPU 数プロセッサ アフィニティを有効にするのには、ステートメント
02 Cpuexec sp_configure '関係マスク' 0x00000003
移動
再構成
移動
04 Cpuexec sp_configure '関係マスク' 0x0000000F
移動
再構成
移動
08 Cpuexec sp_configure 'アフィニティ'、0x000000FF
移動
再構成
移動
16 Cpuexec sp_configure '関係マスク' 0x0000FFFF
移動
再構成
移動
32 Cpuexec sp_configure '関係マスク' 0 xffffffff
移動
再構成
移動
メモ CPU 周波数のバリエーション機能は BIOS レベルで無効にするのには不十分な場合があります。さまざまなサード パーティ製ユーティリティは CPU の周波数を変更できます。Cpu 最大電源設定の設定] である場合もいくつかの実装周波数の調整を有効にします。この例では、パフォーマンス チューニングの SQL Server 2005 を実行するとこれらのサード ・ パーティ製のユーティリティを無効にする必要があります。

サード ・ パーティ製のユーティリティとドライバーを使用して、CPU の周波数と CPU カウンターのクロックを同期するのには

まれに、システム CPU 周波数の問題を修正するのには、製造元から更新プログラムが必要です。システムに問題があること疑いがある場合は、システムに最新の BIOS、マイクロ コード、およびファームウェア更新プログラムを確認することをお勧めします。

詳細

Microsoft SQL Server 2000年と以前のバージョンの SQL Server は、Windows のタイミング メカニズムを使用します。タイミング メカニズムは、ミリ秒の精度の値を使用します。一般に、この精度が 10 〜 15 のマックスウェルは、精度を 55 ミリ秒と同じ大きさにことがあります。SQL Server のクエリが頻繁に 1 桁ミリ秒の単位で完了またはマイクロ秒の間を指します。この精度は、高分解能タイマー必要があります。したがって、これらのバージョンの SQL Server レポート 0 マックスウェルしたがって一部のクエリの期間は、パフォーマンスを監視し、以前のバージョンの SQL Server SQL Server のパフォーマンスを調整することは困難です。

SQL Server 2005 はマイクロ秒のタイミング機能を提供する高解像度の CPU カウンターを使用して精度を向上させます。「現象」に記載されているテクノロジを使用すると、報告されたタイミング値が正しくない可能性があります。

この問題は、次のオブジェクトと機能に影響可能性があります。
  • イベントをトレースします。
    • は、 注意 イベント
    • イベントには、[ストアド プロシージャ] ノード
    • イベント [TSQL] ノード
    • [オブジェクト] ノードのイベント
    • トランザクションのノードでイベント
  • 動的管理ビュー:
    • sys.dm_exec_query_stats
    • sys.dm_exec_requests
    • sys.dm_exec_sessions
    • sys.dm_io_pending_io_requests
    • sys.dm_os_ring_buffers
    • sys.dm_os_sys_info
    • sys.dm_io_virtual_file_stats
    • sys.dm_os_wait_stats
  • 統計の設定時刻ステートメント
  • は、 sysprocesses システム テーブル
SQL Server 2005 Service Pack 2 (SP2) をインストールした後、SQL Server の高分解能タイマー、Cpu 間で同期していることが検出されると SQL Server のエラー メッセージがエラー ログに記録されます。エラー メッセージには、パフォーマンスのタイミングは正確ではない可能性があり、ユーザーが慎重にパフォーマンス データを使用する必要がありますを示します。

エラー メッセージのテキストは、次のエラー メッセージのいずれかのようになります。
エラー メッセージ 1
CPU のタイム スタンプ カウンター スケジューラ id 2 の他の Cpu と同期されません。
エラー メッセージ 2
CPU 時間のタイムスタンプの頻度 191469 から 1794177 のタイマー刻みミリ秒ごとに変わった。新しい頻度を指定します
SQL Server リアル タイム スタンプ カウンター (RDTSC) 命令を使用して、64 ビット CPU ティック数を取得します。値はミリ秒単位の値に変換するのには、CPU の周波数ではこの値を分割できます。タイミングのバリエーションは、CPU 周波数の変更またはドリフトが発生したときに発生します。

CPU のステッピング

CPU ステップが定義されている意図的な変更として CPU の頻度。CPU ステップ実行可能性がありますも必ず既知 Intel SpeedStep テクノロジや AMD PowerNow として!技術です。CPU ステッピング発生、CPU 速度可能性があります増加または 50 MHz として、エネルギーを節約し、発熱を軽減するのには、小さな単位で小さきます。同じ非一様メモリ アクセス (NUMA) ノード内の Cpu は周波数を調整しません。

次の表は、どのように CPU のステッピング変更タイミングの計算に影響する可能性がありますを示しています。
元に戻す全体を表示する
アクションRDTSC のタイマー刻みタイマー刻みのミリ秒 (周波数) 当たりウォール クロック時間
バッチを開始します。12000
周波数ステップ ダウン2001001ms
最後のバッチ5003ms
合計5004ms
SQL Server は、RDTSC のタイマー刻みで開始と終了の両方の RDTSC のタイマー刻みをキャプチャします。SQL Server タイマー刻み間隔の値によって分割します。

200 または 100 の頻度の値を使用すると次の使用例では、次のタイミングの計算が発生します。
  • 200 の頻度: 500/200 = の 2.5 ms
  • 100 の頻度: 500/100 = 5 ミリ秒
タイミングの計算のどちらも 4 ミリ秒の実際の壁の時計と一致します。

この計算で使用する場合は、 RPC: 完了 トレース イベントは、 期間終了時刻 データ列が誤って報告されます。は、 RPC: 完了 ウォール クロック時間を開始して CPU ティック数のイベントをキャプチャします。SQL Server 2005 では、Windows が提供するより高い解像度タイミングを取得するのには 期間終了時刻 SQL Server トレースのデータ列は、経過した CPU ティック数を使用して計算されます。は、 終了時刻 列計算を追加して、 期間 列には、 開始時刻 列です。この例では、 終了時刻 列が正しく 2.5 ms または 5 ms を開始時間に加算して算出されます。

ドリフト

ドリフトは、相違 CPU クロック値です。複数の Cpu を持つシステムで CPU クロック値の 1 つのポイントを生成できます。一般的ではありませんが、Cpu 時間時計の分離があります。

次の例では、どのようにドリフトの変更の結果に影響を 期間 SQL Server トレースのデータ列。CPU の周波数が安定した 200 のタイマー刻みミリ秒ごとにならないと仮定します。次の表は、このシナリオでは、イベントを示します。
元に戻す全体を表示する
アクションWindows の予定されている CPU1 を CPU の RDTSC2 の CPU の RDTSCウォール クロック時間
バッチを開始します。110011000
最後のバッチ290019004 ms
合計4 ms
SQL Server は、RDTSC のタイマー刻みで開始点と終点の両方をキャプチャします。SQL Server RDTSC タイマー刻み間隔の値によって分割します。この例では、Windows SQL Server のワーカー スレッドの 2 つの異なる Cpu を予定しました。バッチ処理 SQL Server ワーカー スレッドは最初 (CPU 1) 前者の CPU で実行しました。

しかし、いくつかの時点では、バッチの実行が中断されました、SQL Server、バッチの実行を保留キューに送信します。SQL Server このバッチを実行可能なキューにもう一度サービス SQL Server ワーカー スレッドに送信すると、Windows、2 つ目の CPU (CPU 2) を実行するスレッドをディスパッチです。SQL Server ワーカー スレッドは、CPU 2 を実行して完了。CPU ドリフトのため、CPU 2 からキャプチャされた、最後のタイマー刻み値を 1900 900 の代わりにしました。SQL Server のプロセッサ アフィニティを有効にする場合は、この問題を回避することができます。

この例では、次のタイミングの計算を使用します。
  • 不適切な値を報告します。 (1900年-100 1800年 =)/200 = 9 ミリ秒
  • 適切な値。 (900-100 800 =)/200 = 4 ミリ秒
値は、 期間 列には、 RPC: 完了 イベント 4 のマックスウェルはなく 9 ミリ秒としてこの 4 ms の正しい値は 2 倍以上になります報告されます。

SQL Server 2005 にパフォーマンス出力」に記載されている信頼性の高いことがあることを示すために、ドリフト警告メッセージが追加されます。未カバーのテスト状況によっては、SQL Server 2005 SP2 警告メッセージが、以下について報告されます。
  • 偽のドリフト警告メッセージ
  • ドリフト数十ミリ秒をせずに顕著なシステム効果の原因となる可能性があります。
パフォーマンス関連の出力を評価するときと壁のクロック タイミングをパフォーマンス関連の出力を比較するときは、慎重でなければなりません。その他のパフォーマンス上の問題の兆候がない場合は、通常、ドリフト警告メッセージを無視できます。など、ドリフト警告メッセージは、以下の状況では通常無視しています。
  • プロセスは期待どおりに実行されています。
  • SQL Server クエリは、奇妙な durational パターンでは実行されていません。
  • その他のボトルネックの記号は表示されません。
ただし、問い合わせることをお勧め、メッセージを警告ドリフトを無視する前にされていない RDTSC 発行するかどうかを確認するのには、製造元が存在します。

8033 (?T8033) トレース フラグを使用すると、オリジナル リリース版の SQL Server 2005 および SQL Server 2005 SP1 でのレポート処理に戻ることができます。オリジナル リリース版の SQL Server 2005 および SQL Server 2005 SP1 ドリフト警告メッセージを報告しません。問題なくオリジナル リリース版の SQL Server 2005 または SQL Server 2005 SP1 を実行している場合は、通常、メッセージを無視できます。

なぜ、WAITFOR 遅延ステートメントは正しく動作しましたか。では、定期的なシステム プロセスについて教えてください。

タイムアウトのメカニズム、高解像度の仕様による影響を受けません。SQL Server タイマー ベースのアクティビティの高分解能タイマーを使用しません。使用して低解像度のタイマーのタイムアウト処理に基づいています、 GetTickCount 関数です。これらタイムアウトの処理には、ロック タイムアウト、WAITFOR 遅延ステートメント、およびデッドロックの検出が含まれます。
詳細については、マイクロソフト サポート技術記事を表示するのには、次の資料番号をクリックしてください。
938448デュアルコア AMD Opteron プロセッサ、または AMD Opteron プロセッサをマルチプロセッサ サーバーを使用する場合は、Windows Server 2003 ベースのサーバー タイム スタンプ カウンター ドリフトが発生する可能性があります。
895980 QueryPerformanceCounter 関数を使用するプログラムでは、Windows Server 2003 および Windows XP でられなかったり可能性があります。
この資料に記載サード ・ パーティ製品がマイクロソフトと関連のある会社で製造されています。明示、黙示、パフォーマンスや信頼性これらの製品に関する負わない。

プロパティ

文書番号: 931279 - 最終更新日: 2011年8月9日 - リビジョン: 11.0
キーワード:?
kbtshoot kbprb kbexpertiseadvanced kbsql2005engine kbmt KB931279 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:931279
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com