OceanBaseデータベースV4.0には非常に豊富なビューがあり、これらのビューを通じてOceanBaseクラスタのさまざまなデータベースオブジェクトの基本情報とリアルタイムの状態情報を取得できます。これらのビューは大きく分けて2つのカテゴリに分類されます:データディクショナリビューと動的性能ビューです。
データディクショナリビュー
システムテナントが管理するデータベースオブジェクトの基本情報を表示します。命名規則は
DBA_とCDB_で始まります。DBA_で始まるビューは各テナント内の情報を表示します。例えば、DBA_OB_LSビューはテナント内のログストリーム情報を表示し、システムテナント内のDBA_OB_LSテーブルはシステムテナント自身のログストリーム情報のみを表示します。CDB_で始まるビューはシステムテナント専用で、システムテナント内でクラスタ内のすべてのテナントのデータベース状態を確認するために使用されます。例えば、CDB_OB_LSビューはクラスタ内のすべてのテナントのすべてのログストリーム情報を表示します。通常、各DBA_で始まるビューには、システムテナント下に対応するCDB_で始まるビューが存在します。動的性能ビュー
システムの動的に変化する状態情報を表示します。命名規則は
GV$とV$で始まります。V$はログインしたノード上の情報のみを表示し、GV$はすべてのノードの情報を表示します。ユーザーテナント下の動的性能ビューでは、そのテナントの情報を確認できます。例えば、GV$OB_UNITSビューでは、ユーザーテナント内でそのテナントのUnitリソース割り当て情報を照会できます。システムテナントの動的性能ビューでは、クラスタ全体のすべてのテナントの情報を確認できます。
豊富なビューは、OceanBaseデータベースの内部アーキテクチャとシステムの詳細な稼働状態を示しています。ビューを通じて、OceanBaseデータベースのシステム構成とリアルタイム状態を容易に確認し、コンポーネント間の関係を理解することができます。内部ビューは、OceanBaseデータベースを学ぶ最良の方法の一つです。例えば、前の章で紹介したOceanBaseデータベースの物理アーキテクチャと論理アーキテクチャに対応するデータディクショナリビューは、以下の図に示されています。
指標収集
モニタリング指標に関連するデータは、OceanBaseデータベース内部の動的性能ビューから取得されます。すべてのモニタリング指標はSQLステートメントを通じてアクセスできます。動的性能ビューはGV$ビューとV$ビューに分かれており、外部モニタリングシステム(例えばOCP)は、各データベースサーバーにエージェントプロセスをデプロイし、SQLインターフェースを通じてローカルのモニタリング情報(V$ビュー)を定期的に取得します。一部のグローバル情報(例えばRoot Service関連)は中央ノードから収集されます。モニタリングデータは統一的にモニタリングシステムデータベースに報告され、さまざまな次元(クラスタ次元、テナント次元、ノード次元、Unit次元)で集計され、全体のモニタリングダッシュボードが構築されます。
説明
- モニタリング指標のデータはOceanBaseデータベースのビューから取得されますが、日常業務では可能な限り可視化された外部モニタリングシステムを使用することを推奨します。これにより、モニタリング指標の変化傾向をより便利に分析し、効率を向上させることができます。
GV$ビューとV$ビューは同質的であるため、以下では特に区別せず、具体的なシナリオに応じて適切なビューを選択します。
モニタリング指標はシステムテナントとユーザーテナントで確認でき、両テナント下のビュー名、フィールド、使用体験は完全に一致しています。違いは、ユーザーテナントでは自テナントのモニタリング情報のみを確認できるのに対し、システムテナントでは現在のクラスタ内のすべてのテナントのモニタリング情報を確認できる点です。
SQLインターフェースに加えて、モニタリング指標はPrometheusプロトコルによる収集もサポートしており、これによりPrometheusとGrafanaを基盤とした可視化モニタリングダッシュボードを容易に構築できます。
OceanBaseで一般的に使用される動的性能ビューは以下のとおりです:
ビュー |
表示内容 |
|---|---|
GV$SYSSTAT |
システム統計情報。 |
GV$SYSTEM_EVENT |
テナントレベルの待機イベント統計。 |
GV$SESSION_EVENT |
セッションレベルの待機イベント統計。 |
GV$LATCH |
ロック統計情報。 |
GV$OB_MEMORY |
メモリ情報。 |
GV$OB_PROCESSLIST |
セッション情報。 |
GV$OB_TRANSACTION_PARTICIPANTS |
アクティブトランザクションの参加者情報。 |
GV$OB_SQL_AUDIT |
SQL統計情報。 |
GV$SQL_PLAN_MONITOR |
SQL演算子レベルの統計情報。 |
GV$OB_PLAN_CACHE_STAT |
Plan Cache統計情報。 |
GV$OB_PLAN_CACHE_PLAN_STAT |
実行計画統計情報。 |
GV$OB_PLAN_CACHE_PLAN_EXPLAIN |
実行計画の詳細情報。 |
GV$OB_SERVERS |
ノードの情報。 |
GV$OB_UNITS |
Unitの情報。 |
GV$OB_PARAMETERS |
構成パラメータ情報。 |
GV$OB_KVCACHE |
KVCache情報。 |
GV$OB_SSTABLES |
SSTable情報。 |
GV$OB_MEMSTORE |
MemStore情報。 |
GV$OB_LOG_STAT |
ログストリームの情報。 |
指標の分類
監視指標は、複数の観点から分類することができます。
監視指標のタイプに基づいて分類すると、システム監視とSQL監視に分けられます。システム監視はシステムの稼働状況を記述し、システム(クラスタ、テナント、セッション)の健全性を判断します。システム監視はさらに、監視項目、待機イベント、ロックイベントなどに細分化されます。SQL監視はSQL関連の監視情報を記述し、SQLの実行過程でのリソース消費と待機イベントを記録することで、特定のSQL問題の診断を行います。
監視指標の粒度に基づいて分類すると、テナントレベル監視とセッションレベル監視に分けられます。テナントレベル監視指標はテナントIDとノードIPでインデックス付けされ、外部監視システムが定期的に各サーバー上のテナント単位で集計された監視データを収集し、異なるシナリオのニーズに応じて、異なる次元(例:クラスタ次元、テナント次元、ノード次元、Unit次元)で集約表示します。テナントレベル監視は監視ダッシュボードのデータソースです。セッションレベル監視指標はセッションIDとTrace IDでインデックス付けされ、特定のセッションに対して全リンク追跡を容易に行うことができ、全リンク追跡の重要な基盤となります。
監視指標が記述する対象に基づいて分類すると、トランザクション、KVCache、CLog、ストレージ、リソース、SSTable、MemStoreなどの内部コンポーネントに関する監視など、いくつかの大きなカテゴリーに分けられます。OceanBaseデータベースの豊富な監視指標により、障害診断時に容易にドリルダウンし、段階的に根本原因に迫ることができます。また、各コンポーネントの健全状態をリアルタイムで追跡し、潜在的なリスクを早期に発見して、データベースSLAに影響を及ぼす前に未然に防ぐことができます。