SAP システムにおける SQL Server 運用ノウハウ マイクロソフト株式会社 SAP/Microsoft コンピテンスセンター
Agenda 統計情報の保守 インデックスの保守 ストアドプロシージャの保守 整合性チェックの実行 ブロッキング・デッドロック
1.統計情報 データの分布状況を示します クエリ実行にあたってのアクセスパス選択に 大きく影響します データの変更が重なるに従い、統計情報は 最新ではなくなり、クエリ実行にあたっての オプティマイザの判断が最適でなくなります
統計情報の保守 統計情報自動更新のオプションについては、通常以下の設定を推奨しています master: OFF msdb, tempdb, <SID> : ON 但し VBHDR, VBDATA, VBMOD テーブルは OFF (SAP Note 327494)
自動更新が起動する為の テーブルへの変更回数 統計情報の保守 統計情報の自動更新が起動するタイミングは、 以下の通りです(Microsoft KB 195565) タイミングを事前に知る方法も記載してあります テーブル種別 自動更新が起動する為の テーブルへの変更回数 6行未満の 一時テーブル 6回 6行以上、 500行未満 500回 500行以上 (500+行数の20%)回
統計情報の保守 安定したパフォーマンスを得る為に、統計情報の 手動での更新も行なって下さい 大量データの変更後に必ず実行するのが理想的です もしくは1週~1ヶ月に1回定期的に更新するよう、通常の SAP のお客様に対してガイドしております デフォルトでは SQL Server が適切なサンプリング割合を判断します より正確な統計情報を得てパフォーマンス問題を 解決するには、サンプリング割合を指定して下さい 更新時間は長くなりますが Fullscan(100%)が堅いです
セカンダリとしての非クラスタ化インデックス 2.インデックス SQL Server ベースの SAP システムには、 クラスタ化インデックスが必ず構成されています 非クラスタ化インデックスは、セカンダリインデックス として構成されています 追加・削除が重なる度に断片化が進行していきます クラスタ化インデックス セカンダリとしての非クラスタ化インデックス
インデックスの保守 インデックス再構築に先立って、その必要性を判断する為に、”DBCC SHOWCONTIG” を実行して、インデックスの断片化の状況を分析して下さい “fast” オプションという簡易オプションを利用 すれば、この作業をすばやく済ませる事が できます
インデックスの保守 スキャン密度が低い or フラグメンテーションが大きい or ページ数が大きい or アプリケーションの使用頻度が高いテーブル (下記基準参照)に対して、 “DBCC INDEXDEFRAG”を実行して下さい システムを停止する必要はありません 基準(例) 論理スキャンフラグメンテーションが15%以上かつ、スキャンされたページ数が100ページ以上
インデックスの保守 この“SHOWCONTIG” チェックを省略して、全てのインデックスを(例えば)1~2週間にわたって毎日分割して実行していくような 運用も、考慮に値します オンラインで再編成出来るからこそ可能な運用
3.ストアドプロシージャ SQL Server ベースの SAP システムにおいて、 クエリはストアドプロシージャとしてデータベース上に展開されます このストアドプロシージャは、その初回実行時に 最適な実行プランを決定し、その後リコンパイル されるまで、同じ実行プランを利用し続けます SAP on SQL Server パフォーマンス上のアドバンテージ ただし、この事が逆にパフォーマンスを不安定に するケースもごく稀に存在しますので注意して下さい (SAP Note 159171)
ストアドプロシージャの保守 ストアドプロシージャのパフォーマンスに問題があり、適切な実行プランが利用されていない事に原因がある場合、下記の解決策を検討して下さい ストアドプロシージャの実行時間が閾値を超えた場合に、自動リコンパイルして再実行するようパラメータを設定(Note 159171) カーネル 4.6A 以降の場合、ABAP の中に SQL Server 向けのオプティマイザヒントを付加 (Note 159171) カーネル 6.20 以降の場合、クエリを毎回最適化する ようパラメータを設定 (Note 28667)
4.整合性チェック チェック対象 インデックスとデータページのリンクが正しい事 インデックスが適切な並べ替え順に並んでいる事 ポインタに一貫性がある事 各ページ上のデータが適切である事 ページオフセットが適切である事 SQL Server 7.0 より、定期的な整合性チェックは 必須ではなく、あくまで本番業務に影響を及ぼさない範囲内で行うべき作業です
整合性チェックの実行 SQL Server の特定のエラーメッセージ (SAP Note 142731参照)が表示された場合、データベースが破損している可能性があるので、 整合性チェックを実行して下さい 「大半の場合、破損はハードウエアの問題により発生します。」(SAP Note 142731) 必要に応じて “PHYSICAL_ONLY” オプションを指定して、 ハードウエアが原因のエラーであるか否かを、手早く 調査して下さい 完全なチェックではなく、ページとレコードヘッダーの物理構造に 絞ったチェックです
5.ブロッキング・デッドロック データベースエラー 1205(デッドロック)の 監視、問題解決にあたっては、SAP Note 565710 の記載に従って下さい 全て運用で解決可能です
以上で、セッションは終了です。ご清聴、どうもありがとうございました。