web-dev-qa-db-ja.com

SAN環境でSQLインデックスを最適化することには利点がありますか?

SQLサーバーはSAN上にあります。これには数十のOLTP=データベースが含まれ、一部には1mを超えるレコードを含むいくつかのテーブルがあります。

私たちは Ola Hallengrenのインデックスメンテナンススクリプト を毎週実行しており、毎回数時間実行されます。断片化のしきい値に基づいて、スクリプトはインデックスを再編成または再インデックスします。インデックスの再作成中にログファイルが巨大になるため、ログ配布中に帯域幅が過剰に消費されることがわかりました。

次に来る SQLインデックスについて心配するのをやめるように言ったBrent Ozarからの記事

ハードドライブは、同時にドライブ要求を出している他のサーバーと共有されているため、ドライブは常にデータを取得するためにあらゆる場所にジャンプします。インデックスのデフラグは、意味のない忙しい作業です。

この質問をグーグルすることはさまざまな意見につながりますが、そのほとんどは、短すぎるか弱いと思われる議論で裏付けられています。暫定的な計画は、メンテナンススクリプトで断片化のしきい値を調整して、インデックスの再作成よりも頻繁に再編成することです。

最終的な判定は何ですか? SAN毎週のメンテナンスジョブの実行に関連する負担を考慮して、SQLインデックスをデフラグすることは価値がありますか?

16
dev_etter

最適化戦略は、scanディスクへの/からのスキャンの速度の向上に役立ちます。

環境の理想的な最適化戦略は多くの異なる要因に依存する必要があるため、幅広い意見が存在します。 断片化の可能性のある複数のレイヤー もあります。

データベースがSAN=に保存されていると言うだけでは、十分な情報ではありません。例:

  • データベースファイルは別々の物理RAIDグループまたは同じRAIDグループに保存されていますか?同じデバイスで他にどのようなプロセスがアクティブですか?あなたのバックアップファイルもそこで終わりますか?この情報は常に透過的ではないため、SAN管理者にこの情報を求める必要がある場合があります。

  • データベースのアクセスパターンは何ですか? OLTPは一般にランダムアクセスですが、アプリケーションがテーブルスキャンに満足していて、その動作(ISVアプリ)を変更できない場合があります。アプリケーションは、読み取り専用、書き込み専用、またはその間のどこかに?

  • リカバリ/フェイルオーバー期間中にパフォーマンスSLAが機能しています

ブレントの投稿は、ストレージの巨大なプールが1つあり、すべてがそれを共有していると想定しています。つまり、物理ディスクがアイドル状態になることはほとんどないため、ほとんどのアクセスはランダムです。それがあなたの状況である場合、アドバイスが適用され、私はほとんどの場合それに同意します。このタイプの戦略は管理がはるかに簡単ですが、必ずしも(a)環境内にあるもの、または(b)環境に最適なソリューションであるとは限りません。

インデックスのメンテナンスに負担がかかる場合は、あまり積極的でないことを検討するか、1週間にわたってコストを償却します(つまり、1週間に1回の重いメンテナンスではなく、1日に1回の軽いメンテナンスを実行します)。

SortInTempdbオプションをオンにして、ユーザーデータベースで行われるログの量を減らすこともできます。

10
Jon Seigel

理想的には、注意が必要なインデックスのみを再編成/再インデックスする必要があります。そうしないと、リソースを浪費し、他の問題を引き起こす可能性があります。

パフォーマンスのベースラインを確立する必要があり、変更を加えるたびに、パフォーマンスの変化をベースラインと比較して、変更を実装する価値があるかどうかを判断します。

2
Jimbo

さて、問題は、ファイルまたはファイルのセットの構造であるデータベースインデックスについてです。上記の答えを読むと、ファイル内のインデックスではなく、ディスクレベルでの断片化について話していると思われるでしょう。これらは完全に別の主題です。

ここで近視的なアプローチは、インデックスを最適化または再構築すると、データベース内およびOLTPデータベースが向上するときのパフォーマンスが向上します。答えはYESです。ただし、ディスクの断片化にも注意することが重要です。要因。

全体的に「コスト」が最も低い?データベースのメンテナンスを行います。 2番目に低いコスト、データベースをデタッチし、別の場所に移動し、ディスクを再フォーマットし、ディスクパーティションアライメントのベストプラクティスに従います http://msdn.Microsoft.com/en-us/library/dd758814.aspx 。最後に重要なことですが、Diskkeeperのようなサードパーティの高度なデフラグツールを使用してください。

注意してください、これはNTFSタイプのストレージ(Windows OSなど)にのみ推奨されます。これはどの製品の推奨でもありません。また、私はCondusiv Technologiesまたはその子会社と提携していません。

0
IryDBA2791