Microsoft SQL Serverの I/O サブシステム要件

この記事では、テンプレート内の tempdb データベースの I/O サブシステム要件SQL Server。

元の製品バージョン:  Microsoft SQL Server 2005、SQL Server 2008、SQL Server 2012 SQL Server 2014
元の KB 番号:   917047

要約

Microsoft SQL Serverには、システム データベースとユーザー データベースの格納に使用される I/O サブシステムが、特定の I/O プリンシパルを通じて Write-Ahead Logging (WAL) 要件を完全に満たす必要があります。 これらの要件は、トランザクションの ACID プロパティ (Atomic、Consistent、Isolated、および Durable) を尊重するために必要です。 I/O サブシステムのコンプライアンス要件の詳細については、次のリファレンスを参照してください。

SQL Server 2000 I/O の基本https://technet.microsoft.com/library/cc966500.aspx

注意

この記事は、2005 SQL Server以降のバージョンにも適用されます。

次の一覧は、要件の簡単な概要です。

  • 書き込み順序は維持する必要があります。
  • 依存する書き込みの一貫性を維持する必要があります。
  • 書き込みは、常に安定したメディアで/で保護する必要があります。
  • 破れた I/O 防止が発生する必要があります。

耐久性の維持は、他のすべてのデータベースにとって重要なままですが、tempdb データベースでは緩和される可能性があります。 次の表に、データベースの重要な I/O 要件SQL Server示します。

I/O 要件 簡単な説明 システムまたはユーザー tempdb
書き込み順序

依存する書き込みの一貫性
サブシステムが書き込み操作の正しい順序を維持する機能。 これは、ソリューションのミラーリング、グループの一貫性要件、および WAL プロトコルの使用SQL Serverに重要です。 必須 推奨
書き込み後の読み取り 書き込みが正常に完了した後に読み取りが発行されると、サブシステムが最新のデータ イメージで読み取り要求を処理する機能。 必須 必須
停止間の存続 システムの再起動など、停止中もデータが完全にそのまま (永続的) に維持される機能。 必須 該当なし
破れた I/O 防止 個々の I/O 要求を分割しないようにするシステムの機能。 必須 推奨
セクターの書き換え セクターは完全にしか書き込めず、近くのセクターでの書き込み要求のために書き換えできません。 * 推奨されません。トランザクションの場合にのみ許可されます * 推奨されません。トランザクションの場合にのみ許可されます
強化されたデータ 書き込み要求または FlushFileBuffers 操作が正常に完了すると、データが安定したメディアに保存されるという期待。 必須 該当なし
物理セクターの配置とサイズ SQL Serverデータとログ ファイルの保存場所を尋問します。 すべてのデバイスは、物理セクター揃えの境界SQL Serverセクター サイズの倍数で書き込みを実行できるセクター属性をサポートするために必要です。 必須 必須

トランザクション セクターの書き換えには、サブシステムによる完全にログに記録された操作が含まれるので、セクターを完全に移動、置換、または元のイメージにロールバックできます。 このような操作を実行するために必要なオーバーヘッドが追加されたため、通常、これらの書き換えは推奨されません。 この例は、ファイル データを defragmentation 移動するユーティリティです。 ファイル内の元のセクターは、新しいセクターとデータがセキュリティで保護されるまで、新しいセクターの場所に置き換えできません。 セクターの再マップは、電源障害を含むすべてのエラーが元のデータの再確立を引き起こすので、トランザクション形式で行う必要があります。 無効なデータ アクセスを防止するために、この種類のプロセス中にロック メカニズムを使用でき、その結果、I/O の他のテナントをSQL Serverしてください。

停止間の存続

tempdb データベースは、アプリケーションのスクラッチ領域SQL Server、すべての起動時にSQL Serverされます。 初期化は、再起動後もデータが必要な場合に取ってかえります。

トランザクション セクターの書き換え操作

ロールバックやクラッシュ回復などの回復プロセスの成功を保証するには、データ ページを保存する前にログ レコードを安定したメディアに正しく保存する必要があります。トランザクション プロパティを尊重せずに書き換えすることはできません。 これには、サブシステムと SQL Server が、書き込み順序、セクター揃え書き込み、サイズ設定書き込みなど、特定の属性を維持する必要があります。また、前述のドキュメントで説明したその他の I/O セーフティ属性も必要です。 tempdb データベースの場合、起動時にデータベースが常に初期化されるので、クラッシュ復旧SQL Serverです。 ただし、tempdb データベースにはロールバック機能が必要です。 そのため、WAL プロトコルの一部の属性を緩和できます。

tempdb データベースの記憶域の場所は、確立されたディスク ドライブ プロトコルに厳密に従って機能する必要があります。 すべての方法で、tempdb データベースが格納されているデバイスが表示され、書き込み後の読み取り機能を提供する物理ディスクとして機能する必要があります。 トランザクション セクターの書き換え操作は、特定の実装の追加要件になる場合があります。 たとえば、ntfs SQL Serverは、既に書き込み、強化されたと見なされているログのセクターを書き換えることができますので、NTFS ファイル システム圧縮を使用してデータベースの変更をサポートしていないとします。 この種類の書き換え中にエラーが発生すると、データベースが使用できなくなって、セキュリティで保護SQL Server破損する可能性があります。

注意

SQL Serverデータベースとファイル グループのみを読み取る 2005 拡張サポートまたは圧縮。 詳細については、「SQL Server 2005 Books Online」を参照してください。

トランザクション セクターの書き換え操作は、tempdb データベースSQL Server含むすべてのデータベースに関連付けされます。 さまざまな拡張ストレージ テクノロジでは、セキュリティで保護されたと見なされるデータを書き換えるデバイスとユーティリティSQL Server使用しています。 たとえば、一部の新しいテクノロジでは、メモリ内キャッシュまたはデータ圧縮を実行します。 深刻なデータベースの損傷を避けるために、セクターの書き換えには、エラーが発生した場合にデータが以前のセクター イメージにロールバックされるなどの完全なトランザクション サポートが必要です。 これにより、予期しない中断SQL Serverデータの破損状態が発生する可能性はありません。

tempdb データベースは、RAM ディスク、ソリッド ステート、その他の高速実装など、他のデータベースでは使用できない特殊なサブシステムに置く場合があります。 ただし、これらのオプションを評価する際には、「詳細」セクションに示す重要な要素を考慮する必要があります。

注意

フェールオーバー クラスター環境のローカル ディスクは、ソリッド ステートまたは高速実装でのみサポートされます。 これは、RAM ディスクは iSCSI ターゲット上でのみ作成できるためです。 さらに、iSCSI ターゲット機能とフェールオーバー クラスター機能を同じホストで使用することはできません。

詳細情報

tempdb データベースの格納場所を評価する際には、いくつかの要因を慎重に検討する必要があります。 たとえば、tempdb データベースの使用状況には、メモリ使用量、クエリ プラン、および I/O の決定が含まれるが、これらに限定されません。 tempdb データベースの適切なチューニングと実装により、システムのスケーラビリティと応答性が向上します。 このセクションでは、tempdb データベースのストレージニーズを決定する際の重要な要素について説明します。

高速サブシステム

市場には、SQL Server I/O サブシステム プロトコル要件を提供するが、メディアの耐久性を提供しないさまざまな高速サブシステム実装があります。

重要

常に製品ベンダーに確認し、I/O ニーズに完全SQL Serverを保証します。

RAM ディスクは、このような実装の一般的な例の 1 つです。 RAM ディスクは、必要なドライバーをインストールし、メイン RAM ディスクの一部がシステムに接続されているディスク ドライブと同様に表示され、機能します。 すべての I/O サブシステムは、I/O 要件に完全SQL Server準拠している必要があります。 ただし、RAM ディスクが永続的なメディアではないのは明らかです。 そのため、RAM ディスクなどの実装は tempdb データベースの場所としてのみ使用できます。他のデータベースには使用できません。

実装と展開の前に考慮すべきキー

この種類のサブシステムに tempdb データベースを展開する前に、さまざまな点を考慮する必要があります。 このセクションでは、説明の基礎として RAM ディスクを使用しますが、他の高速実装でも同様の結果が発生します。

I/O セーフティ

書き込みおよびトランザクション セクターの書き込み後の読み取りへの準拠は必ず必要です。 I/O SQL Serverを完全にサポートしていないシステムには、SQL Serverを展開したり、データの破損や損失を危険にさらしたりしな。

既にキャッシュされているページ (ダブル RAM キャッシュ)

一時テーブルは、データベース内の他のすべてのテーブルと同様です。 これらはバッファー プールによってキャッシュされ、遅延書き込み操作によって処理されます。 一時テーブル ページを RAM ディスクに格納すると、バッファー プールに 1 つ、RAM ディスクに 1 つ、2 つの RAM キャッシュが発生します。 これにより、バッファー プールの可能な合計サイズから直接離れ、通常、バッファー プールのパフォーマンスが低下SQL Server。

RAM をあきらめる

RAM ディスクは、メイン RAM の一部を名前が示すように指定します。 使用可能な RAM ディスクと RAM ベースのファイル キャッシュには、いくつかの実装があります。 一部のユーザーは、物理 I/O バッキング操作も有効にしています。 RAM ベースのファイル キャッシュの重要な要素は、メモリキャッシュで使用できる物理メモリから直接SQL Server。 RAM ベースのファイル キャッシュを追加すると、アプリケーションのパフォーマンスが向上し、他のクエリやアプリケーションのパフォーマンスが低下しないという強い証拠が常に存在します。

最初にチューニングする

アプリケーションは、tempdb データベースの使用を引き起こす可能性がある不要で不要な並べ替えとハッシュを削除するために調整する必要があります。 インデックスを追加すると、プランの並べ替えやハッシュが完全に不要な場合が多く、tempdb データベースを使用せずに最適なパフォーマンスを実現できます。

考えられる利点

tempdb データベースを高速システムに置くことの利点は、アプリケーションワークロードの厳密なテストと測定によってのみ決定できます。 tempdb データベースがメリットを得られる可能性がある特性については、ワークロードを慎重に検討する必要があります。また、展開前に I/O の安全性を確認する必要があります。

並べ替え操作とハッシュ操作は、SQL Serverマネージャーと共に動作し、並べ替えまたはハッシュ操作ごとにメモリ内のスクラッチ領域のサイズを決定します。 並べ替えまたはハッシュ データが割り当てられたメモリ内のスクラッチ領域を超えると、データが tempdb データベースに書き込まれる可能性があります。 このアルゴリズムは、2005 年SQL Server拡張され、以前のバージョンのバージョンよりも tempdb データベースの使用要件がSQL Server。

注意事項

SQL Serverは、tempdb データベース操作を使用するクエリ プランの決定を行う際に、メモリ レベルと現在のクエリ アクティビティを考慮するように設計されています。 したがって、パフォーマンスの向上は、ワークロードとアプリケーション設計によって大きく異なります。 このような展開の前に、望ましいソリューションを使用してテストを完了し、可能な利益を判断し、I/O の安全性要件を評価することを強く推奨します。

SQL Server tempdb データベースを使用して、並べ替え、ハッシュ、行バージョン ストア、および一時テーブルを含むさまざまなアクティビティを処理します。

  • 一時テーブルは、データ ページの一般的なバッファー プール ルーチンによって維持され、一般に特殊なサブシステム実装によるパフォーマンス上の利点は示されません。
  • tempdb データベースは、ハッシュと並べ替えのスクラッチ領域として使用されます。 このような操作の I/O 待機時間を短縮すると、有益な場合があります。 ただし、ハッシュや並べ替えを避けるためにインデックスを追加すると、同様の利点が得らねています。

高速サブシステムに格納されている tempdb データベースの使用と使用しない場合は、ベースラインを実行して利点を比較します。 テストの一部には、並べ替え、ハッシュ、または一時テーブルを含むユーザー データベースに対するクエリが含まれる必要があります。その後、これらのクエリが悪影響を受けずに行う必要があります。 システムを評価すると、次のパフォーマンス インジケーターが役に立ちます。

インジケーター 説明/使用法
ページの読み取りと書き込み tempdb データベース I/O のパフォーマンスを向上すると、tempdb データベース I/O に関連付けられた待機時間が短くなるので、ユーザー データベースのページ読み取りと書き込みの速度が変化する可能性があります。 ユーザー データベース ページの場合、全体の数は同じワークロード間で異なる必要があります。
tempdb データベースへの物理読み取りおよび書き込みバイト tempdb データベースを RAM ディスクなどのデバイスに移動すると、tempdb データベースの実際の I/O が増える場合、バッファー プールから取り出されたメモリによって tempdb データベース アクティビティが増加しています。 このパターンは、データベース ページのページの平均余命が負の影響を受ける可能性があるという指標です。
ページの平均余命 ページの平均余命が低下すると、ユーザー データベースの物理 I/O 要件が増加する可能性があります。 レートの低下は、バッファー プールから取り出されたメモリが、データベース ページがバッファー プールを途中で終了している可能性があります。 他のインジケーターと組み合わせてテストし、パラメーターの境界を完全に理解します。
全体的なスループット
CPU 使用率
スケーラビリティ
応答時間
tempdb データベース構成の変更の主な目標は、全体的なスループットを高める方法です。 テストには、スループットの影響を判断するためにスケール アウトできる反復可能なワークロードの組み合わせが含まれる必要があります。

圧縮ベースの RAM ディスクの実装のようなものは、10 人のユーザーとうまく機能する可能性があります。 ただし、ワークロードが増加すると、CPU レベルが目的のレベルを超えてプッシュされ、ワークロードが高い場合の応答時間に悪影響を与える可能性があります。 真のストレス テストと将来の負荷予測テストが推奨されます。
作業ファイルと作業テーブル作成アクション tempdb データベースを RAM ディスクなどのデバイスに移動すると、作業ファイルまたは作業テーブルの数またはサイズを増やしてクエリ プランを変更すると、バッファー プールから取り出されたメモリが tempdb データベース アクティビティの増加を引き起こしている可能性があります。 このパターンは、データベース ページのページの平均余命がマイナスの影響を受ける可能性を示します。

トランザクション セクターの書き換えの例

次の例では、データベースで必要なデータ セキュリティSQL Serverします。

RAM ディスク ベンダーがメモリ内圧縮の実装を使用するとします。 SQL Server が気づいており、基になる実装から正しく保護されるように、セクターが揃ってサイズが調整された場合と同様に、ファイル ストリームの物理的な外観を提供することで、実装を正しくカプセル化する必要があります。 圧縮例を詳しく見る。

アクション
セクター 1 はデバイスに書き込まれるので、スペースを節約するために圧縮されます。
セクター 2 はデバイスに書き込まれます。領域を節約するためにセクター 1 で圧縮されます。

デバイスは、セクター 2 のデータと組み合わせると、セクター 1 のデータをセキュリティで保護するために、次のアクションを実行できます。

アクション
セクター 1 および 2 へのすべての書き込みをブロックします。
セクター 1 をスクラッチ領域に圧縮解除し、現在のセクター 1 ストレージを取得するアクティブ データとして残します。
セクター 1 と 2 を新しいストレージ形式に圧縮します。
セクター 1 と 2 のすべての読み取りと書き込みをブロックします。
Exchange 1 とセクター 2 の古いストレージを新しい記憶域と一緒に使用します。
Exchange の試行が失敗した場合 (ロールバック):
セクター 1 とセクター 2 の元の記憶域を復元します。
セクター 1 と 2 の結合データをスクラッチ領域から削除します。
セクター 2 の書き込み操作に失敗します。
セクター 1 および 2 の読み取りと書き込みのブロックを解除します。

セクターの変更に関するロック 機構を提供し、セクター交換の試行が失敗した場合に変更をロールバックする機能は、移行に準拠したと見なされます。 拡張バッキングに物理記憶域を使用する実装では、SQL Server データベース ファイルの整合性を維持するためにディスク上の構造に適用された変更のセキュリティ保護とロールバックに役立つ適切なトランザクション ログの側面が含まれます。

セクターの書き換えを有効にするデバイスは、データ損失にさらされないSQL Server方法で書き換えをサポートする必要があります。

注意

tempdb データベースSQL Server I/O およびロールバックエラーが発生すると、このインスタンスが再起動されます。

tempdb データベースを移動する場合は注意してください

tempdb データベースを移動する場合、tempdb データベースを作成できない場合は、SQL Server開始しないように注意してください。 tempdb データベースを作成できない場合は、SQL Server (-f) スタートアップ パラメーターを使用して開始し、tempdb データベースを有効な場所に移動します。

tempdb データベースの物理的な場所を変更するには、次の手順を実行します。

  1. ステートメントと ALTER DATABASE MODIFY FILE 句を使用して、tempdb データベース内の各ファイルの物理ファイル名を変更して、新しいディスクなどの新しい物理的な場所を参照します。

    Alter database tempdb modify file 
    (name = tempdev, filename = 'C:\MyPath\tempdb.mdf')
    
    Alter database tempdb modify file 
    (name = templog, filename = 'C:\MyPath\templog.ldf')
    
  2. 停止してから再起動SQL Server。

パートナー製品の認定は、互換性または安全性の保証ではありません

サード パーティ製品または特定のベンダーは、Microsoft ロゴ認定を受け取る可能性があります。 ただし、パートナー認定または特定の Microsoft ロゴは、互換性や特定の目的に対する適合性を認定SQL Server。

サポート

この記事で説明するように、トランザクション データベースの使用に対する I/O 保証をサポートする SQL Server でサブシステムを使用する場合、Microsoft は SQL Server および SQL Server ベースのアプリケーションをサポートします。 ただし、サブシステムに関する問題、または原因によって発生した問題は、製造元に参照されます。

tempdb データベース関連の問題については、Microsoft サポート サービスから tempdb データベースの再配置を求める質問が表示されます。 デバイスベンダーに問い合わせ、トランザクション データベース用にデバイスが正しく展開および構成されていることを確認します。

Microsoft は、サードパーティ製品が適切に動作する製品を認証または検証SQL Server。 また、Microsoft は、第三者製品による製品の使用に関する保証、保証、または声明を提供SQL Server。

関連情報

詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を表示します。

このドキュメントに含まれる情報は、発行日に関して説明されている問題に関する Microsoft Corporation の現在のビューを表しています。 Microsoft は変化する市場の状況に対応する必要があるため、Microsoft 側のコミットメントと解釈される必要はありません。また、公開日以降に提示される情報の正確性を保証することはできません。

このホワイト ペーパーは、情報提供のみを目的とします。 MICROSOFT は、このドキュメントの情報に関して、明示的、黙示的、または法的な保証を行いません。

該当するすべての著作権法の順守は、ユーザー側の責任となります。 著作権法の範囲に限定されることなく、米国 Microsoft Corporation の書面による明示的な許諾なしに、このドキュメントのいかなる部分も、いかなる形式または手段 (電子的、機械的、コピー複写、記録、またはその他の方法) で、またはいかなる目的でも、複製、保存、検索システム導入、または転送することはできません。

Microsoft は、本ドキュメントに記載されている内容に関し、特許、特許出願、商標、著作権、またはその他の知的財産権を有する場合があります。 別途、使用許諾契約書上に明示の規定のない限り、本ドキュメントはこれらの特許、商標、著作権、またはその他の知的財産権に関する権利をお客様に許諾するものではありません。

© 2007 Microsoft Corporation. All rights reserved.

Microsoft、Windows、Windows、SQL Serverは、米国およびその他の国における Microsoft Corporation の登録商標または商標です。

SQL Server I/O 信頼性プログラムの要件に従って、「安定したメディアへの保証された配信」をサポートSQL Serverシステムが必要です。 データベース エンジンの入力要件と出力要件の詳細については、「SQL Server Microsoft SQL Server データベース エンジン/出力要件」を参照してください