INF: SQL Server でディスク ドライブのキャッシュを使う。

文書翻訳 文書翻訳
文書番号: 234656 - 対象製品
この記事は、以前は次の ID で公開されていました: JP234656
すべて展開する | すべて折りたたむ

概要

データベース システムの第一にして最大の使命はデータの確実な保存と検索であり、それは予期しないシステム障害があったときでも変わりません。

システムは、現在の実行状況の報告、複数トランザクション、多様な障害があった場合でも、トランザクションの原子性 不可分性と耐久性を保証しなければなりません。これは、不可分性、一貫性、独立性、耐久性を意味する、Atomicity、Consistency、Isolation、Durability の頭文字を取って ACID プロパティと呼ばれます。

この記事ではディスク ドライブのキャッシュの意味について扱います。キャッシュや代替障害モードの詳細な説明については、Microsoft Knowledge Base で、次の記事を参照してください。
86903 INF: SQL Server and Caching Disk Controllers
46091 INF: Using Hard Disk Controller Caching with SQL Server
230785 INF: SQL Server 7.0 Logging and Data Storage Algorithms Extend Data Reliability

詳細

SQL Server 7.0、以前のバージョンの SQL Server、または現在市場に出ている多くの主流のデータベース製品では、先行書き込みログ (WAL) プロトコルが使用されています。
先行書き込みログ (WAL) プロトコル
プロトコルという用語は WAL を良く表しています。これは、確実にデータの保存と交換が行われること、および、障害発生時に既知の状態への復旧が行われることを保証する場合に必要な特定の定義済みインプリメンテーションの一連の手順です。ネットワークには 一貫性があり保護された方法でデータ交換を行うために定義済みプロトコルがあるように、WAL でも同様にデータを保護するプロトコルが記述されています。
すべてのバージョンの SQL Server で、ログおよびデータ ファイルは CreateFile を使用してオープンされます。SQL Server によってオープンされた場合は、 dwFlagsAndAttributes メンバには FILE_FLAG_WRITE_THROUGH オプションが入ります。
FILE_FLAG_WRITE_THROUGH
このオプションは、システムに対して中間キャッシュをスルーしてディスクに直接書きこむよう指示します。その場合でもシステムはキャッシュ書き込み操作を行うことができますが、レイジーでフラッシュすることはできません。

FILE_FLAG_WRITE_THROUGH オプションは、書き込み操作が正常終了を返した場合にはデータが正常に安定記憶に保存されていることを保証します。これは、先行書き込みログ (WAL) プロトコル仕様と合わせてデータを保証するものです。
多くのディスク ドライブ (SCSI や IDE) には、512KB、1MB、またはそれ以上のオンボー ド キャッシュが搭載されています。しかし、ドライブ キャッシュは通常バッファ コン デンサに頼っており、バッテリによりバックアップされているものではありません。このようなキャッシュ メカニズムでは、電源などの障害の際の書き込みは保証されず、セ クタ書き込み操作の完全性が保証されているのみです。ドライブのサイズが大きくなるにつれ、キャッシュも大きくなってきました。障害が起こると大量のデータを失う可能性があります。

多くのベンダから、機能的なバッテリ付きキャッシュが発売されています。これらのキャッシュはデータを数日間維持し、キャッシュ カードを別のコンピュータに移すことさえも可能です。電源が正しく復元されたら、未書き込みのデータは以降のデータ アクセスが許可される前に完全にフラッシュされます。それらの多くは、最適な性能を得られるように、読み取りと書きこみのキャッシュの割合を設定できます。大容量メモリを持つものもあります。実際、(マーケットの非常に限られたセグメントでは) 6GB 以上のキャッシュを持つハイエンドのバッテリ付きディスク キャッシュ システムを発売しているハードウ ェア ベンダもあります。これらを使用すると、データベースの性能を著しく向上させることができます。

キャッシュを使用せずに I/O 転送を行うと、機械的にかかる時間 (ドライブのヘッド移動、回転数、およびそのほかの制限ファクタ) のために、著しく遅くなる可能性があります。

データ保全を完全に行うには、すべてのデータのキャッシュが適切に処理されなければなりません。多くの場合、これはディスク ドライブの書き込みキャッシュを無効にする必要があることを意味します。

メモ: 代わりのキャッシュ メカニズムがすべて複数の種類の障害を正しく処理することを確認してください。

Microsoft では、SQL70IOStress ユーティリティ使用して複数の SCSI と IDE ド ライブのテストを行ってきました。このユーティリティは、シミュレート対象のデータ デ バイスとログ デバイスに対して高負荷の非同期の読み取り/書き込み動作をシミュレートします。テストでの性能統計値は、書き込みキャッシュが無効で 5,200 〜 7,200 RPM ク ラスのドライブでは、平均の 1 秒あたりの書き込み回数は 50 〜 70 であることを示しています。

SQL70IOStress の詳細のすべて、および、そのほかの情報については、Microsoft Knowledge Base の以下の記事を参照してください。
231619 INF: SQL70IOStress Utility to Stress Disk Subsystem
多くの PC メーカー (Compaq、Dell、Gateway、HPなど) は、書き込みキャッシュを無効にしたドライブをオーダーしていますが、テストの結果が示すとおり、これは必ずしもそうであるわけではないので、常に完全なテストを行ってください。

メモ: お使いのディスク ドライブのキャッシュの状態に関して疑問点がある場合は、製造元に問い合わせて、書き込みキャッシュ操作を無効にする適切なユーティリティやジャンパ設定を入手してください。

詳細

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 234656 (最終更新日 1999-07-07) をもとに作成したものです。

プロパティ

文書番号: 234656 - 最終更新日: 2004年9月22日 - リビジョン: 1.0
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 7.0 Standard Edition
キーワード:?
kbhowto KB234656
"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