データベース管理者は、キャパシティプランニングからセキュリティ、データリカバリまで、舞台裏で多くのことを身に付けています。おそらく、DBAの責任の中で最も目に見えるのは、SQLServerのパフォーマンスの監視です。高性能システムの維持に関連する日常のタスクは、外の世界には見過ごされがちですが、パフォーマンスが理想的とは言えない場合、人々が注意を向け始めると信じる方がよいでしょう。
データベースの停止、応答時間の遅さ、およびその他のユーザーが直面する問題は、ビジネスに悪影響を及ぼします。また、SQL Serverのパフォーマンス(またはその欠如)はDBAドメインに直接当てはまるため、パフォーマンスの低いデータベースはジョブのセキュリティに悪影響を及ぼします。
失業の脅威はさておき、SQL Serverのピークパフォーマンスを確保することは、組織の円滑な運営に不可欠であるため、SQLServerのパフォーマンスを最適化するためにDBAが知っておく必要のある5つの秘訣をまとめました。
日常業務とメンテナンスの自動化
最近では、DBAが日常のタスクやメンテナンスチェックを手動で行う理由はほとんどありません。現在のSQLServerパフォーマンス監視ツールは、ディスクスペースを自動的に監視し、エラーログを検査し、バックアップを検証できます。問題があることを通知するだけでなく、問題の重大度と種類に関する情報を提供するシステムアラートを設定することもできます。
これらの監視ツールの主な利点の1つは、パフォーマンス監視機能の多くにモバイルデバイスからアクセスできるため、トラブルシューティングがはるかに柔軟になることです。事実上どこからでも、いつでもシステムを監視およびトリアージできます。
パフォーマンスメトリクスの追跡
もちろん、SQL Serverのパフォーマンス監視ツールが現在の問題を見つけて修正することは重要ですが、過去のパフォーマンスを追跡することにも多くの価値があります。データベースのパフォーマンスを長期にわたって監視および分析すると、傾向を特定し、将来のパフォーマンスの問題を予測するのに役立ちます。パフォーマンス履歴を追跡すると、特定の期間でパフォーマンスが向上したか低下したかに関するデータが提供されます。
ワークロード分析は、SQLServerのパフォーマンスを向上させるのに役立つパフォーマンスメトリックを取得するもう1つの方法です。分析を実行して、ユーザー、データベース、ホスト、またはSQLステートメントがワークロードにどのように影響しているかを特定します。システムに悪影響を及ぼしているソースを特定すると、問題を解決するための適切な手順を実行するのがはるかに簡単になります。
ボトルネックの根本原因を特定する
上記のように、ボトルネックまたはパフォーマンスキラーの原因を特定すると、問題を修正するのがはるかに簡単になります。注意すべきボトルネックと症状の一般的な原因には、次のものがあります。
- CPUの問題:SQLServerがプロセッサを占有しています
- メモリの問題:クエリの実行時間が長くなります
- ストレージの問題:ディスクでの極端なアクティビティとI/Oあたりの長い待機時間
- I / Oの問題:WRITELOGの待機時間は合計待機時間と比較して長いです
ボトルネックを特定したら、次のような一般的なパフォーマンスの問題に対処するために試すことができる、いくつかの頼りになる修正があります。
- SQL Serverの調整:遅延した特定のクエリ、遅延の原因となった特定の待機時間、およびボトルネックの時間への影響を特定します。
- 廃止された重複したインデックスを削除する:オプティマイザーはクエリのパフォーマンスを分析して計画を決定するときに複数のインデックスを考慮する必要がないため、クエリを高速化します。
- 断片化の修正:インデックスを定期的に再構築または最適化すると、SQL Serverが読み取る必要のある散在または部分的に埋められたデータページの数が減り、パフォーマンスが向上します。
定期的なパフォーマンスヘルスチェックの実行
ほとんどの場合、予防は治療よりも優れています。ヘルスチェックを使用して、システム内の実際の問題と潜在的な問題を特定します。ヘルスチェックは、セキュリティ、ディザスタリカバリ、メモリ、I / O、および構成に関する問題を、重大なパフォーマンスの問題を引き起こす前に特定するのに役立ちます。
定期的なヘルスチェックには以下を含める必要があります:
- 欠落しているインデックスの確認:欠落しているインデックスは、すべてのレコードでデータを検索する必要があるため、SQLServerの応答を遅くします。ただし、不足しているインデックスを追加するのは早すぎないでください。不要なインデックスを追加すると、パフォーマンスにも悪影響を与える可能性があります。
- 不均衡なレベルのアドホッククエリの監視:アドホッククエリを使用しても問題がない場合があります。ただし、頻繁に使用すると、パフォーマンスが低下します。 SQL Serverはこれらのステートメントを再利用しないため、プロシージャキャッシュが肥大化し、バッファキャッシュがデータをフラッシュします。次に、SQL Serverは、メモリからではなくディスクからデータを読み取る必要があります(低速)。
- 古い統計の検索:SQL Serverクエリオプティマイザーは、統計を使用して操作の推定コストを計算します。統計が古くなっていると、クエリオプティマイザが次善の実行プランを選択する可能性があります。
最新のSQLServerバージョンへのアップグレード
これは当たり前のように感じますが、まだ行っていない場合は、SQLServerの最新バージョンにアップグレードしてください。 SQL Server 2000、2005、および2008は現在活発に開発されておらず、新しいバージョンには、パフォーマンスを確実に向上させる多くの機能があります。これらの機能には、SQL Serverクエリオプティマイザーの最新バージョン、新しいCPU命令セット、そしてもちろんバグ修正が含まれます。