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への影響を未然に防ぐことができます。