非クラスター化インデックスは、いつ別々のファイルグループに保存する必要がありますか?


16

別のファイルグループとドライブにインデックスを保存すると、ドライブがインデックスとインデックスが参照するデータとの間を行き来する必要がないため、データベースのパフォーマンスが向上すると聞きました。また、これは神話だと聞いたことがあります。

非クラスター化インデックスを別のファイルグループとドライブに保存することをお勧めします。どのようなperfmon / profilerの証拠がその結論に到達するのに私を導くでしょうか?ハードウェアは決定に役割を果たしますか(RAID / SANが単一のドライブで使用されるかどうか)?

回答:


10

DBシステムの最も遅い部分はディスクドライブです。ディスクレベルでボトルネックを解消すると、パフォーマンスが向上します。データが検索され、インデックスが使用されると、インデックスが最初に検索され、次に対応するデータがフェッチされます。インデックスとデータの両方が同じディスク上にある場合、競合が発生しています。一方、データが別の(物理)ディスク上にある場合、IOが高速になり、パフォーマンスが向上します。注意すべき主な部分は、データまたはインデックスが個別の物理ディスクまたはLUN上にあることです。

ディスクがある場合、システムのパフォーマンスを向上させる必要がある場合は、このようなシナリオを使用します。あなたのperfmonカウンタのためには使用することができPhysical Disk – Avg. Disk sec/ReadPhysical Disk – Avg. Disk sec/WritePhysical Disk – Disk Reads/secPhysical Disk – Disk Writes/sec変更の前と後の比較を持っています。


1
2つの個別の物理ディスクの代わりに、何らかの方法で2つの個別のディスクドライブでインデックスとデータを管理する場合、たとえば、同じハードディスクにあるD:\とE:\は、読み取りに関する競合を考慮すると、パフォーマンスがいくらか向上しますハードディスクストレージ?
RBT

5

異なるドライブ間で同時I / Oを分散するとパフォーマンスが向上することは確かに真実です-それは神話ではありません。神話では、2回実行するとパフォーマンスが再び向上するということです。

あなたの場合はSAME、その後、2つのパーティションにあなたの配列を分割し、別の上に1と表の索引を置くのは時間の無駄です。


私は同意しますが、これが彼が求めていたものであるとは思いません。
NTDLS

質問は、「ハードウェアが決定に関与していますか(単一のドライブでRAID / SANを使用するか)」。私の答えは基本的には次のとおりです。RAIDを使用する場合、インデックスとテーブルを分割する必要はありません。これは...あなたは間違いなくあなたはRAIDを持っていないした場合でも言っているのではない
ジャック・ダグラス

5

インデックスをデータから個別のファイルグループに分離する=パフォーマンスの改善は非常に議論の余地があります。基礎となるハードウェアがサポートされている場合、パフォーマンスの向上は「可能性があります」が、それらを異なるファイルグループに分離してもパフォーマンスが向上しないという事実によってのみ発生します。また、このためにパフォーマンスの向上を測定することも簡単ではありません。

参照:http : //weblogs.sqlteam.com/dang/archive/2008/08/01/Are-you-a-DBA-Monkey.aspx

最初に質問する必要があります。なぜこれをする必要があるのですか?

  1. インデックスを含めないことで、バックアップのパフォーマンスを向上させたいですか?
  2. これらのインデックスの読み取りと書き込みのパフォーマンスを向上させたいですか?
  3. 基礎となるオブジェクトの配置をより管理しやすくするためにこれを行っていますか?
  4. パフォーマンスに対するニーズがさまざまな大量のデータがありますか?
  5. パフォーマンスを改善するために非クラスター化インデックスにSSDを使用することを検討していますか...

上記のリストの#5の必要性をサポートするためにこのタスクを検討しましたが、まだ対処していませんが、良い提案のようです。

この決定は簡単ではないため、何をしようとしているかを把握し、サポートするハードウェアがあることを確認する必要があります。十分にテストしてパフォーマンスが大幅に向上しない限り、このような変更を行わないでください。インデックスを個別のファイルグループに分離するだけでパフォーマンスを向上させることが期待されている場合、それは価値がありません。


私はダンの記事が好きです:-)。私たち全員が古い企業標準をインポートし、ある時点でその有用性を疑問視することが起こると思います。
マリアン

1

このアイテムに関する私の個人的な経験をお伝えします。現在のディスクドライブが必要なスペースに対して十分に大きくない場合非クラスター化インデックスは別のファイルグループに格納する必要があります :-)。あなたはそれについて笑うことができます..しかしそれは起こります。

そのため、データドライブに空き領域を残そうとするときの緊急修正は、空き領域のあるドライブの新しいファイルグループですべての非クラスター化インデックスをオンラインで再作成する素敵なスクリプトを作成することでした。新しいストレージを購入するのは簡単かつ迅速だと思うかもしれませんが、実際にはそうではありません。

パフォーマンスに関しては、移動後も普通のことは何も見られませんでした。しかし、それはすべてがまとめられている大きなSANストレージボックスです:-)。


1

一般に; データとインデックスを同様のパフォーマンスを持つ別々のディスクに分割すると、そのテーブルへの実質的な書き込み操作またはそのインデックスを使用する大規模な読み取り操作のパフォーマンスが向上します。複数の物理ディスクに分割されたパーティションテーブルなど、他のI / O操作と同様の方法論。

ただし、ストレージに大きく依存します。例えば; 素敵なFushion ioDrive(または同様のもの)を備えたサーバーがあり、個別の回転ディスクも持っている場合。ioDriveにすべてを保持する方が、より有益な場合があります(スペースが限られている場合を除く)。考慮すべき他の事項もあります-RAID構成、ネットワークストレージ構成。

同様のハードウェアを備えたテストサーバー上で、または(セカンダリサーバーがオプションでない場合のみ)一時的なデータを使用して、ピーク時以外にベンチマーキングを行います。上記のSankarによるDBAとMonkeyのリンクは、考えてみてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.