SAP システムにおける SQL Server 運用ノウハウ

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 の記載に従って下さい
– 全て運用で解決可能です