OAS は現在、以下の2つのバックグラウンドタスクを提供しています。
異常イベント分析:システムが異常イベントを検出した際、そのイベントに関連するSQLを自動的に分析します。
SQL日常巡回点検:クラスタ内のSQLを定期的に巡回点検し、疑わしいSQLを発見します。
システムが異常イベントに関連するSQLを分析した場合、または日常巡回点検中にSQL実行計画の不備を発見した場合、OASは以下の操作を自動的に実行できます。
PlanCacheの自動リフレッシュ:SQLの実行計画キャッシュをクリアし、オプティマイザーに実行計画を再生成させます。
Outlineの自動バインド:SQLの過去の実行計画の性能統計値に基づき、実行計画に異常のあるSQLに対して、過去にCPU時間が低かった実行計画を自動的にバインドします。
自動スロットリング:ホストのCPU使用率が継続して85%を超えた場合、システムはその異常の原因となるSQLを分析し、指定された期間内にその原因SQLの単一マシンでの並行度を自動的に制限します。
操作手順
OB Cloudデータベースコンソールにログインします。
左側のナビゲーションペインで、インスタンス をクリックします。
インスタンスリストから対象インスタンスを見つけ、インスタンス名をクリックしてインスタンスワークベンチに入ります。
左側のナビゲーションペインで 診断 をクリックし、診断 ページで 根本原因診断 タブを選択します。
根本原因診断 タブの右側で、自律設定 をクリックします。
ポップアップウィンドウで、機能スイッチをオンにし、以下の設定を行います。
PlanCacheの自動リフレッシュ:有効化状態と実行タイミングを設定します。
Outlineの自動バインド:有効化状態と実行タイミングを設定します。
自動スロットリング:自動スロットリングのトリガー条件とパラメータ設定を完了します。
無効化オブジェクトの設定(オプション):データベース、テナント、またはSQLのブラックリストを設定すると、システムが自己修復する際にこれらのオブジェクトは自動的に無視されます。
通知設定:DingTalkグループ通知のWebhookアドレスを設定します。詳細は以下のとおりです。
DingTalkグループでロボットを作成し、Webhookアドレスリンクをコピーします。取得方法については、カスタムボットのWebhookアドレスの取得をご参照ください。
リンクをテキストボックスに入力し、確認 をクリックすると、OASはそのDingTalkグループに検証コードを送信します。
検証コードを入力し、検証を完了します。
説明
- システム自律機能を有効にした後、診断 > リアルタイム診断 > 最適化記録の表示 > 最適化履歴 で自動リフレッシュおよび自動バインドされた実行計画の記録を照会できます。関連記録の操作元は「システム自律」です。
- 現在、自己修復機能はSELECTタイプのSQLのみをサポートしています。
PlanCacheの自動リフレッシュ
SQL巡回点検時:実行計画が悪化したSQLのみPlanCacheを自動リフレッシュします。
根本原因分析時:異常イベントに関連するすべてのSQLに対してPlanCacheを自動リフレッシュします。
Outlineの自動バインド
バインド前のチェック:
システムはSQLの実行計画のリフレッシュを試行し、新しく生成された実行計画を監視します。
新しい実行計画のCPU時間が過去の実行計画より20%低い場合、自己修復は成功と見なされ、Outlineはバインドされません。
より良い実行計画が生成されなかった場合、バインド操作を実行し、上記のDingTalkグループにアラート通知を送信します。
バインド後の監視:
バインド完了後、システムはそのSQLの実行計画を継続して監視します。
バインド後にさらに良い実行計画が生成されなかった場合、バインド操作をロールバックし、上記のDingTalkグループにアラート通知を送信します。
注意事項:
- Outlineの自動バインドは、過去の実行計画の性能統計値に基づき、実行計画が悪化したSQLに対して、過去にCPU時間が低かった実行計画をバインドします。
大小アカウントのシナリオでは、バインド操作が必ずしもSQL性能の向上を保証するわけではないため、自己修復アラート通知に細心の注意を払い、バインド効果を適時に確認してください。
- カーネルSPM(SQL Plan Management)が有効になっているクラスタでは、SPM機能との競合を避けるため、Outlineの自動バインドを有効にしないことを推奨します。
自動スロットリング
システムが根本原因SQLを特定できる場合:
- スロットリング期間中に、根本原因SQLに対して最大並行度を設定します。
スロットリング時間が最大スロットリング時間に達すると、システムは自動的にスロットリングを解除します。
- 根本原因SQLのアクティブセッションを同時に閉じる設定がされている場合、自動スロットリングと同時に根本原因SQLのアクティブセッションを閉じます。
システムが根本原因SQLを特定できない場合:何も操作を行いません。