現在オフラインです。再接続するためにインターネットの接続を待っています

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

この記事は、以前は次の 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 の以下の記事を参照してください。
231619INF: SQL70IOStress Utility to Stress Disk Subsystem
多くの PC メーカー (Compaq、Dell、Gateway、HPなど) は、書き込みキャッシュを無効にしたドライブをオーダーしていますが、テストの結果が示すとおり、これは必ずしもそうであるわけではないので、常に完全なテストを行ってください。

メモ: お使いのディスク ドライブのキャッシュの状態に関して疑問点がある場合は、製造元に問い合わせて、書き込みキャッシュ操作を無効にする適切なユーティリティやジャンパ設定を入手してください。
詳細
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 234656(最終更新日 1999-07-07) をもとに作成したものです。

プロパティ

文書番号:234656 - 最終更新日: 09/22/2004 00:56:00 - リビジョン: 1.0

Microsoft SQL Server 7.0 Standard Edition

  • kbhowto KB234656
フィードバック