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への影響を回避することができます。