セッション管理では、テナントセッションの表示、セッション統計、デッドロック検出のサービスを提供します。
背景情報
アプリケーションとデータベースの接続はセッションと呼ばれます。セッションタブで、全セッション数、アクティブセッション、アイドルセッション数を確認できます。
テナントセッション
説明
- プロキシセッションは、データベースプロキシサーバーが記録するセッションです。
- データベースセッションは、OceanBase サーバーが記録するセッションで、その OceanBase サーバー上の固有のデータベース接続を識別するために使用されます。
- テナントセッションタブには、現在のセッションのみが表示されます。1つのプロキシセッションは複数のデータベースセッションに対応しますが、1つのデータベースセッションのみが表示されます。アクティブなデータベースセッションが存在する場合はそのセッションが表示され、存在しない場合はランダムに1つ表示されます。
操作手順
OB Cloudクラウドデータベースコンソールにログインします。
左側のナビゲーションペインで、**インスタンス**をクリックします。
インスタンスリストから対象インスタンスを見つけ、インスタンス名をクリックしてインスタンスワークベンチに入ります。
左側のナビゲーションペインで**診断をクリックし、診断ページでリアルタイム診断**タブを選択します。
ページ中央で**セッション**タブをクリックします。
**セッション管理タブで、テナントセッション**をクリックします。検索ボックスにプロキシセッション ID、データベースセッション ID、SQL ID、または SQL テキストを入力してセッションを検索できます。
**アクティブなセッションのみを表示**をチェックし、セッションリストでアクティブセッション情報を確認します。複数のアクティブセッションをチェックすると、一括で流量制限を設定できます。
説明
チェックしたセッションに対応するデータベース名にNo_database(データベース接続時にデータベース名が指定されていない場合)が含まれている場合、一括で流量制限を設定することはできません。
**SQL ID でセッションをグループ化**をチェックすると、同じ SQL ID のセッションがまとめて表示されます。
説明
- SQL ID でグループ化することで、異なる SQL ID のトラフィックと消費量の比較を分析し、システムリソースの消費元を確認できます。
- SQL ID でセッションをグループ化をチェックする前提として、アクティブセッションのみ表示がチェックされている必要があります。
**SQLで集計によるセッションの表示**をチェックすると、集約 in SQL に従ってセッションが表示されますが、統計データには影響しません。複数のアクティブセッションをチェックすると、一括で流量制限を設定できます。
説明
- 集約 in SQL とは、SQL ステートメントの in 句内の定数パラメータの数を無視し、各 in 句を1つの定数パラメータとして扱い、このルールに従って SQL ステートメントをパラメータ化し、SQL ID を計算することです。SQL ID が同じ SQL は同じカテゴリとして集約されます。
- 集約 in でセッションを表示をチェックする前提として、SQL ID でセッションをグループ化がチェックされている必要があります。
- チェックしたセッションに対応するデータベース名にNo_database(データベース接続時にデータベース名が指定されていない場合)が含まれている場合、一括で流量制限を設定することはできません。
テナントセッションには以下の情報が含まれます。
セッション情報 |
説明 |
|---|---|
| プロキシセッション ID | データベースプロキシサーバーが記録するセッション ID。 |
| データベースセッション ID | OceanBase サーバーが記録するセッション ID で、その OceanBase サーバー上の唯一のデータベース接続を識別するために使用されます。 |
| SQL ID | セッションが現在実行している SQL の ID で、SQL の一意の識別子です。 |
| SQL テキスト | セッションが現在実行している SQL の具体的な内容。 |
| ユーザー | セッションログインに使用されるデータベースユーザー名。 |
| ソース | セッションを開始したアドレス。通常はクライアント IP。 |
| ターゲット | セッションを受信するアドレス。 |
| データベースノード | 現在のセッションがアクセスしているデータベースノード。 |
| データベース | 現在のセッションがアクセスしているデータベース。 |
| コマンド | セッションが現在実行しているコマンドタイプ。 |
| 実行時間(秒) | セッションが現在実行している SQL の消費時間。実行時間(s)でセッションをソートできます。 |
| CPU時間(秒) | セッションが現在実行している SQL が CPU を占有する時間。CPU 時間(s)でセッションをソートできます。 |
| ステータス | 現在のセッションのステータス。 |
**SQLテキストをクリックすると、SQL実行の詳細**ページに移動し、完全な SQL テキストと最適化の提案を確認できます。
説明
-
SQL 実行計画が変更され、パフォーマンスが低下した場合、システムは計画バインドの提案を提供します。SQL インデックスが最適ではなく、以下の条件を満たす場合、システムはインデックス最適化の提案を提供します。
- SQL の平均応答時間が 20ms を超えるか、平均 CPU 時間が 10ms を超える場合
- SQL タイプが SELECT, SELECT_FOR_UPDATE, UPDATE, DELETE の場合
- SQL に困難な述語 "OR" が含まれていない場合
- SQL に JOIN が含まれていない場合
特定のセッションの操作列にある**セッションを閉じるをクリックすると、対応するセッションを削除できます。複数のセッションをチェックすると、セッションをバッチで閉じる**を選択できます。
説明
セッションを閉じた後、セッション管理タブの右上にある最適化履歴の表示 > 最適化履歴を選択してタスクステータスを確認できます。
- 流量制限を設定します。
個別に流量制限を設定する:
a. 対象セッションの操作列にある**スロットリングの設定**をクリックします。
b. ポップアップダイアログボックスで、**最大同時実行性を入力し、わかりました**をクリックします。
c. ポップアップダイアログボックスで、**わかりました**をクリックします。
一括で流量制限を設定する:
a. 対象セッションの前のチェックボックスをチェックし、下部の**バッチセットのスロットル**をクリックします。
b. ポップアップダイアログボックスで、**最大同時実行数を入力し、確定**をクリックします。
c. ポップアップダイアログボックスで、**OK**をクリックします。
説明
- チェックしたセッションに SQL がない場合、流量制限を設定することはできません。
- チェックしたセッションに対応するデータベース名にNo_database(データベース接続時にデータベース名が指定されていない場合)が含まれている場合、一括で流量制限を設定することはできません。
- 流量制限を設定した後、セッション管理タブの右上にある最適化履歴の表示 > 最適化履歴を選択してタスクステータスを確認できます。
セッション統計
**セッション統計**タブでは、ユーザー、アクセス元、データベースの各ディメンションから、現在のクラスタのセッションアクティブ数とセッション総数をそれぞれ表示またはエクスポートできます。
右上の**10 秒 SQL 分析をクリックすると、10 秒間のテナント内の SQL 実行状況を統計し、SQLタイプ、ユーザー、ソース、データベース**で分類して表示できます。
デッドロック検出
OceanBase データベースは、マルチバージョン2フェーズロックを使用して、その同時実行制御モデルの正確性を維持しており、ロックメカニズムは、データの正確な同時実行性と一貫性を保証する上で非常に重要です。
ロックメカニズムの実装はデッドロックを引き起こす可能性があります。デッドロックとは、リソースに対する循環的な依存関係を指します。例えば、トランザクション A とトランザクション B が同時にリソース 1 と 2 を取得しようとする場合、トランザクション A がリソース 1 を優先的に取得し、次にリソース 2 を取得しようとし、トランザクション B がリソース 2 を優先的に取得し、次にリソース 1 を取得しようとします。このとき、どのトランザクションもすでに取得したリソースを放棄しようとしない場合、どのトランザクションも正常に終了できません。
説明
OceanBase データベース 3.2 以降のバージョンは、デッドロック検出機能をサポートしています。
操作手順
説明
デッドロック検出機能を有効にすると、OceanBase データベースはデッドロックイベントをリアルタイムで検出し、処理します。これにより、約 2% のパフォーマンスが消費されます。実際の状況に応じて有効にするかどうかを選択してください。
デッドロック検出を初めて使用する場合は、**自動デッドロック検出を有効にする**をクリックします。
デッドロック検出が有効になると、システムはこのクラスタのテナントにデッドロックが存在するかどうかを診断し始め、**デッドロック詳細**ページに診断結果を返します。検出結果は7日間保持されます。
右上隅の**デッドロック自動検出を無効にする**または更新アイコンをクリックして、デッドロック検出の詳細を無効にするか更新できます。 </source_text>