本記事では、ビューを使用してテナントおよびリソースに関する情報を確認する方法について説明します。
テナントのリソース
データベース内のリソースは、論理リソースと物理リソースの2つに分類されます。論理リソースとは、論理的概念に対応する実体を指し、データ構造、スレッド、ロック、セッションなどが含まれます。物理リソースとは、ハードウェアリソースを指し、CPU、ディスク、メモリなどが含まれます。テナントが作成できる論理リソースの量は物理リソースによって制限され、1つの論理リソースは1つまたは複数の物理リソースによって制限される場合があります。
ロジックリソース
OceanBaseデータベースのロジックリソースと関連説明は、以下の表に示されています。
| リソース名 | 説明 |
|---|---|
| LS | ログストリームは、トランザクションの基本的なコミット単位です。テナントが各ノード上で作成できるログストリームの数は、隠れた構成パラメータ(_max_ls_cnt_per_server)、テナントメモリ(MAX(8, (MEMORY_SIZE - 4G) / 200MB + 8))、ログディスクサイズによって共同で決定されます。そのうち:
|
| TABLET | データシャードは、データ移行の基本単位です。テナントが各ノード上で作成できるTablet数の上限は、構成パラメータとテナントメモリによって共同で決定され、その計算式は (MEMORY_SIZE/1GB) * _max_tablet_cnt_per_gb および (MEMORY_SIZE * _storage_meta_memory_limit_percentage) / 200MB * 20000 です。そのうち:
|
| SESSION | セッションは、テナントが各ノード上で作成できる接続数の上限は、隠れた構成パラメータ _resource_limit_max_session_num またはテナントメモリ((MEMORY_SIZE * 5%) / 100KB)によって決定されます。そのうち、テナントレベルの隠れた構成パラメータ _resource_limit_max_session_num は、ユーザーテナント内の一般ユーザーの最大同時接続数を制御します。値の範囲は[0,1000000]で、デフォルト値は0であり、設定されていないことを意味し、システム内部では (MEMORY_SIZE * 5%) / 100KB に基づいて最大接続数を計算します。_resource_limit_max_session_num の値が0より大きい場合は、隠れた構成パラメータで設定された値が優先されます。この構成パラメータの変更は即時に反映され、OBServerノードの再起動は不要です。 |
| THREAD | スレッドは、各ノード上のスレッド数の上限は、隠れた構成パラメータ _ob_max_thread_num によって決定されます。クラスタレベルの隠れた構成パラメータ _ob_max_thread_num は、各ノードのスレッド数の上限を設定します。値の範囲は[0,10000)で、デフォルト値は0であり、上限を設定しないことを意味します。この構成パラメータはsysテナントのみが変更でき、変更後は即時に反映され、OBServerノードの再起動は不要です。 |
| TX_PARTICIPANT | トランザクション参加者は、トランザクションが特定のログストリームのデータを変更すると、そのログストリームはトランザクションの参加者となり、参加者データ構造が生成されます。アクティブなトランザクションの参加者をアクティブ参加者と呼び、1つのノード上でのアクティブ参加者数の上限は70万です。 |
物理リソース
OceanBaseデータベースの物理リソースおよび関連説明は以下の表に示されています。
| リソース名 | 説明 |
|---|---|
| DATA_DISK | データディスク。ユーザーの業務データを格納するためのディスクで、現在すべてのテナントが共有しています。 |
| CLOG_DISK | ログディスク。テナントのclogを格納するためのディスクです。 |
| CPU | CPU。テナントが使用可能な計算リソースです。 |
| MEMORY | メモリ。テナントが使用可能な総メモリ量です。 |
| MEMSTORE | 業務データ用メモリ。テナントが使用可能な業務データ用メモリです。 |
関連ビュー
OceanBaseデータベースは、テナントおよびリソース情報に関するビューを提供しており、システムテナントoceanbaseデータベースでこれらのビューを使用して関連情報を照会できます。
DBA_OB_UNIT_CONFIGS:リソース仕様ID、名前、リソース構成など、すべてのリソース仕様情報を表示します。DBA_OB_RESOURCE_POOLS:リソースプールID、名前、バインドテナント、ゾーンリストなど、すべてのリソースプール情報を表示します。DBA_OB_TENANTS:テナントID、名前、タイプ、リソースなど、すべてのテナントの構成情報を表示します。GV$OB_units:ノードのUnit情報を表示します。ノードIPアドレス、ポート、リソース仕様ID、テナントID、リソース構成などが含まれます。GV$OB_SERVERS:ノードのリソース割り当て情報を表示します。ノードIPアドレス、ポート、所属ゾーン、リソース使用状況などが含まれます。GV$OB_TENANT_RESOURCE_LIMIT:各Unit上のテナントの論理リソース使用量、上限値、有効制限条件、ダウンタイム再起動後の最大使用量を表示します。GV$OB_TENANT_RESOURCE_LIMIT_DETAIL:テナントの論理リソースが受ける制限と、それぞれの制限の上限値を表示します。
すべてのリソース仕様情報を表示する
DBA_OB_UNIT_CONFIGSビューを使用すると、すべてのリソース仕様情報を表示できます。例:
クエリ結果の2行目のデータを例にとると、リソース仕様(UNIT_CONFIG_ID)の名前はconfig_mysql001_zone1_S1_okz、リソース仕様ID(UNIT_CONFIG_ID)は1001、作成時間(CREATE_TIME)は2022-12-20 18:04:31、CPU仕様の上限(MAX_CPU)は1.5C、メモリ仕様(MEMORY_SIZE)は6G、ログディスク容量(LOG_DISK_SIZE)は18Gです。
obclient [oceanbase]> SELECT * FROM DBA_OB_UNIT_CONFIGS;
+----------------+-------------------------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
| UNIT_CONFIG_ID | NAME | CREATE_TIME | MODIFY_TIME | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT |
+----------------+-------------------------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
| 1 | sys_unit_config | 2022-12-20 17:50:17.035504 | 2022-12-20 17:50:17.035504 | 1 | 1 | 14495514624 | 14495514624 | 10000 | 10000 | 1 |
| 1001 | config_mysql001_zone1_S1_okz | 2022-12-20 18:04:31.547715 | 2022-12-20 18:04:31.547715 | 1.5 | 1.5 | 6442450944 | 19327352832 | 15000 | 15000 | 1 |
| 1002 | config_mysql001_zone2_S1_pme | 2022-12-20 18:04:31.561335 | 2022-12-20 18:04:31.561335 | 1.5 | 1.5 | 6442450944 | 19327352832 | 15000 | 15000 | 1 |
| 1003 | config_mysql001_zone3_S1_jsu | 2022-12-20 18:04:31.564510 | 2022-12-20 18:04:31.564510 | 1.5 | 1.5 | 6442450944 | 19327352832 | 15000 | 15000 | 1 |
| 1013 | config_oracle001_zone3_S1_exu | 2022-12-26 18:28:37.969047 | 2022-12-26 18:28:37.969047 | 1.5 | 1.5 | 6442450944 | 19327352832 | 15000 | 15000 | 1 |
| 1014 | config_oracle001_zone2_S1_hli | 2022-12-26 18:28:37.972194 | 2022-12-26 18:28:37.972194 | 1.5 | 1.5 | 6442450944 | 19327352832 | 15000 | 15000 | 1 |
| 1015 | config_oracle001_zone1_S1_owy | 2022-12-26 18:28:37.976446 | 2022-12-26 18:28:37.976446 | 1.5 | 1.5 | 6442450944 | 19327352832 | 15000 | 15000 | 1 |
+----------------+-------------------------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
7 rows in set
DBA_OB_UNIT_CONFIGSビューのパラメータの詳細については、DBA_OB_UNIT_CONFIGSを参照してください。
すべてのリソースプール情報を表示する
DBA_OB_RESOURCE_POOLSビューを使用すると、すべてのリソースプール情報を表示できます。例:
クエリ結果の2行目のデータを例にとると、リソースプール(RESOURCE_POOL_ID)の名前はpool_mysql001_zone3_jsu、リソースプールのID(RESOURCE_POOL_ID)は1001、所属するテナントID(TENANT_ID)は1002、使用するリソース仕様ID(UNIT_CONFIG_ID)は1003、リソースプールのユニット数(UNIT_COUNT)は1、使用するゾーンリスト(ZONE_LIST)はzone3です。
obclient [oceanbase]> SELECT * FROM DBA_OB_RESOURCE_POOLS;
+------------------+--------------------------+-----------+----------------------------+----------------------------+------------+----------------+-------------------+--------------+
| RESOURCE_POOL_ID | NAME | TENANT_ID | CREATE_TIME | MODIFY_TIME | UNIT_COUNT | UNIT_CONFIG_ID | ZONE_LIST | REPLICA_TYPE |
+------------------+--------------------------+-----------+----------------------------+----------------------------+------------+----------------+-------------------+--------------+
| 1 | sys_pool | 1 | 2022-12-20 17:50:17.038641 | 2022-12-20 17:50:17.045453 | 1 | 1 | zone1;zone2;zone3 | FULL |
| 1001 | pool_mysql001_zone3_jsu | 1002 | 2022-12-20 18:04:31.607227 | 2022-12-20 18:04:31.692836 | 1 | 1003 | zone3 | FULL |
| 1002 | pool_mysql001_zone1_okz | 1002 | 2022-12-20 18:04:31.617087 | 2022-12-20 18:04:31.691827 | 1 | 1001 | zone1 | FULL |
| 1003 | pool_mysql001_zone2_pme | 1002 | 2022-12-20 18:04:31.621327 | 2022-12-20 18:04:31.692836 | 1 | 1002 | zone2 | FULL |
| 1013 | pool_oracle001_zone3_exu | 1010 | 2022-12-26 18:28:37.979539 | 2022-12-26 18:28:38.059505 | 1 | 1013 | zone3 | FULL |
| 1014 | pool_oracle001_zone1_owy | 1010 | 2022-12-26 18:28:37.988964 | 2022-12-26 18:28:38.058440 | 1 | 1015 | zone1 | FULL |
| 1015 | pool_oracle001_zone2_hli | 1010 | 2022-12-26 18:28:37.994241 | 2022-12-26 18:28:38.059505 | 1 | 1014 | zone2 | FULL |
+------------------+--------------------------+-----------+----------------------------+----------------------------+------------+----------------+-------------------+--------------+
7 rows in set
DBA_OB_RESOURCE_POOLSビューのパラメータの詳細については、DBA_OB_RESOURCE_POOLSを参照してください。
すべてのテナント情報を表示する
DBA_OB_TENANTSビューを使用すると、すべてのテナント情報を表示できます。例は以下のとおりです:
クエリ結果の3行目のデータを例にとると、テナント名(TENANT_NAME)はmysql001、テナントID(TENANT_ID)は1002、テナントタイプ(TENANT_TYPE)はユーザーテナント、テナント作成時間(CREATE_TIME)は2023-05-17 18:15:21、テナントのPRIMARY_ZONE(PRIMARY_ZONE)はzone1(高優先順位)とzone2、テナントレプリカの配置(LOCALITY)はzone1、zone2、zone3、互換性モード(COMPATIBILITY_MODE)はMySQLです。
obclient [oceanbase]> SELECT * FROM DBA_OB_TENANTS;
+-----------+-------------+-------------+----------------------------+----------------------------+--------------+---------------------------------------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+---------------------+---------------------+---------------------+---------------------+--------------+----------------------------+
| TENANT_ID | TENANT_NAME | TENANT_TYPE | CREATE_TIME | MODIFY_TIME | PRIMARY_ZONE | LOCALITY | PREVIOUS_LOCALITY | COMPATIBILITY_MODE | STATUS | IN_RECYCLEBIN | LOCKED | TENANT_ROLE | SWITCHOVER_STATUS | SWITCHOVER_EPOCH | SYNC_SCN | REPLAYABLE_SCN | READABLE_SCN | RECOVERY_UNTIL_SCN | LOG_MODE | ARBITRATION_SERVICE_STATUS |
+-----------+-------------+-------------+----------------------------+----------------------------+--------------+---------------------------------------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+---------------------+---------------------+---------------------+---------------------+--------------+----------------------------+
| 1 | sys | SYS | 2023-05-17 18:10:19.940353 | 2023-05-17 18:10:19.940353 | RANDOM | FULL{1}@zone1 | NULL | MYSQL | NORMAL | NO | NO | PRIMARY | NORMAL | 0 | NULL | NULL | NULL | NULL | NOARCHIVELOG | DISABLED |
| 1001 | META$1002 | META | 2023-05-17 18:15:21.455549 | 2023-05-17 18:15:36.639479 | zone1;zone2 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | NULL | MYSQL | NORMAL | NO | NO | PRIMARY | NORMAL | 0 | NULL | NULL | NULL | NULL | NOARCHIVELOG | DISABLED |
| 1002 | mysql001 | USER | 2023-05-17 18:15:21.461276 | 2023-05-17 18:15:36.669988 | zone1;zone2 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | NULL | MYSQL | NORMAL | NO | NO | PRIMARY | NORMAL | 0 | 1684395321137516636 | 1684395321137516636 | 1684395321052204807 | 4611686018427387903 | NOARCHIVELOG | DISABLED |
| 1003 | META$1004 | META | 2023-05-17 18:18:19.927859 | 2023-05-17 18:18:36.443233 | zone1 | FULL{1}@zone1 | NULL | MYSQL | NORMAL | NO | NO | PRIMARY | NORMAL | 0 | NULL | NULL | NULL | NULL | NOARCHIVELOG | DISABLED |
| 1004 | oracle001 | USER | 2023-05-17 18:18:19.928914 | 2023-05-17 18:18:36.471606 | zone1 | FULL{1}@zone1 | NULL | ORACLE | NORMAL | NO | NO | PRIMARY | NORMAL | 0 | 1684395321137558760 | 1684395321137558760 | 1684395320951813345 | 4611686018427387903 | NOARCHIVELOG | DISABLED |
+-----------+-------------+-------------+----------------------------+----------------------------+--------------+---------------------------------------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+---------------------+---------------------+---------------------+---------------------+--------------+----------------------------+
5 rows in set
DBA_OB_TENANTSビューのパラメータの詳細については、DBA_OB_TENANTSを参照してください。
テナントリソース構成の確認
以下のステートメントを使用して、複数のビューでテナントのリソース構成情報を検索します。
クエリ結果のmysql001テナントを例にとると、pool:conf列ではこのテナントの3つのリソースプール名と使用されているリソース仕様名を確認できます。unit_info列では、リソースプールのユニット数が1であり、対応するCPU構成が1.5C、メモリ構成がすべて6Gであることがわかります。
obclient [oceanbase]> SELECT c.TENANT_ID, e.TENANT_NAME, concat(c.NAME, ': ', d.NAME) `pool:conf`,concat(c.UNIT_COUNT, ' unit: ', d.min_cpu, 'C/', ROUND(d.MEMORY_SIZE/1024/1024/1024,0), "G") unit_info
FROM DBA_OB_RESOURCE_POOLS c, DBA_OB_UNIT_CONFIGS d, DBA_OB_TENANTS e
WHERE c.UNIT_CONFIG_ID=d.UNIT_CONFIG_ID AND c.TENANT_ID=e.TENANT_ID AND c.TENANT_ID>1000
ORDER BY c.TENANT_ID;
+-----------+-------------+---------------------------------------------------------+-----------------+
| TENANT_ID | TENANT_NAME | pool:conf | unit_info |
+-----------+-------------+---------------------------------------------------------+-----------------+
| 1002 | mysql001 | pool_mysql001_zone1_okz: config_mysql001_zone1_S1_okz | 1 unit: 1.5C/6G |
| 1002 | mysql001 | pool_mysql001_zone2_pme: config_mysql001_zone2_S1_pme | 1 unit: 1.5C/6G |
| 1002 | mysql001 | pool_mysql001_zone3_jsu: config_mysql001_zone3_S1_jsu | 1 unit: 1.5C/6G |
| 1010 | oracle001 | pool_oracle001_zone3_exu: config_oracle001_zone3_S1_exu | 1 unit: 1.5C/6G |
| 1010 | oracle001 | pool_oracle001_zone2_hli: config_oracle001_zone2_S1_hli | 1 unit: 1.5C/6G |
| 1010 | oracle001 | pool_oracle001_zone1_owy: config_oracle001_zone1_S1_owy | 1 unit: 1.5C/6G |
+-----------+-------------+---------------------------------------------------------+-----------------+
6 rows in set
テナントのリソースユニットのデプロイメント場所を確認する
次のステートメントを使用して、現在作成されているテナントのリソースユニットが配置されているデバイスのIPアドレス情報を確認します。
クエリ結果では、各テナントに対応するIDとリソースが存在するノードのIPアドレスを確認できます。
obclient [oceanbase]> SELECT a.TENANT_NAME,a.TENANT_ID,b.SVR_IP FROM DBA_OB_TENANTS a,GV$OB_UNITS b WHERE a.TENANT_ID=b.TENANT_ID;
+-------------+-----------+----------------+
| TENANT_NAME | TENANT_ID | SVR_IP |
+-------------+-----------+----------------+
| sys | 1 | xx.xx.xx.237 |
| META$1002 | 1001 | xx.xx.xx.237 |
| mysql001 | 1002 | xx.xx.xx.237 |
| META$1010 | 1009 | xx.xx.xx.237 |
| oracle001 | 1010 | xx.xx.xx.237 |
| sys | 1 | xx.xx.xx.238 |
| META$1002 | 1001 | xx.xx.xx.238 |
| mysql001 | 1002 | xx.xx.xx.238 |
| META$1010 | 1009 | xx.xx.xx.238 |
| oracle001 | 1010 | xx.xx.xx.238 |
| sys | 1 | xx.xx.xx.218 |
| META$1002 | 1001 | xx.xx.xx.218 |
| mysql001 | 1002 | xx.xx.xx.218 |
| META$1010 | 1009 | xx.xx.xx.218 |
| oracle001 | 1010 | xx.xx.xx.218 |
+-------------+-----------+----------------+
15 rows in set
ノードのUnit情報を確認する
GV$OB_UNITSビューを使用すると、すべてのノードのUnit情報を確認できます。例:
- クエリ結果の3行目を例にとると、ノードIP(SVR_IP)は
xx.xx.xx.218、サーバーのポート番号(SVR_PORT)は2882、unit ID(UNIT_ID)は1001、テナントID(TENANT_ID)は1002、対応するZone名(ZONE)はzone3、CPUスペックの上限(MAX_CPU)は1.5C、メモリサイズ(MEMORY_SIZE)は5G、ログディスクサイズ(LOG_DISK_SIZE)は16G、ログディスク使用量(LOG_DISK_IN_USE)は1.07G、データディスク使用量(DATA_DISK_IN_USE)は572M、unitの状態(STATUS)は正常です。 - SVR_IPがすべてxx.xx.xx.218の5行をまとめて見ると、このノードには5つのunitがあり、それぞれTENANT_IDが1、1001、1002、1009、1010のテナントに属しています。
- TENANT_IDが1002の3行をまとめて見ると、このテナントは3つのノードにそれぞれ1つのunitを持ち、UNIT_IDは1001、1002、1003です。
obclient [oceanbase]> SELECT * FROM GV$OB_UNITS;
+----------------+----------+---------+-----------+-------+-----------+----------------+---------+---------+-------------+----------+----------+-------------+---------------+-----------------+------------------+--------+----------------------------+
| SVR_IP | SVR_PORT | UNIT_ID | TENANT_ID | ZONE | ZONE_TYPE | REGION | MAX_CPU | MIN_CPU | MEMORY_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT | LOG_DISK_SIZE | LOG_DISK_IN_USE | DATA_DISK_IN_USE | STATUS | CREATE_TIME |
+----------------+----------+---------+-----------+-------+-----------+----------------+---------+---------+-------------+----------+----------+-------------+---------------+-----------------+------------------+--------+----------------------------+
| xx.xx.xx.218 | 2882 | 3 | 1 | zone3 | ReadWrite | default_region | 1 | 1 | 14495514624 | 10000 | 10000 | 1 | 14495514624 | 11566462821 | 6069157888 | NORMAL | 2022-12-20 17:49:25.705363 |
| xx.xx.xx.218 | 2882 | 1001 | 1001 | zone3 | ReadWrite | default_region | NULL | NULL | 1073741824 | NULL | NULL | NULL | 1932735283 | 1520602567 | 7325351936 | NORMAL | 2022-12-20 18:04:31.693819 |
| xx.xx.xx.218 | 2882 | 1001 | 1002 | zone3 | ReadWrite | default_region | 1.5 | 1.5 | 5368709120 | 15000 | 15000 | 1 | 17394617549 | 1154755905 | 599785472 | NORMAL | 2022-12-20 18:04:31.693819 |
| xx.xx.xx.218 | 2882 | 1013 | 1009 | zone3 | ReadWrite | default_region | NULL | NULL | 1073741824 | NULL | NULL | NULL | 1932735283 | 1495227415 | 5368709120 | NORMAL | 2022-12-26 18:28:38.060661 |
| xx.xx.xx.218 | 2882 | 1013 | 1010 | zone3 | ReadWrite | default_region | 1.5 | 1.5 | 5368709120 | 15000 | 15000 | 1 | 17394617549 | 3532346784 | 681574400 | NORMAL | 2022-12-26 18:28:38.060661 |
| xx.xx.xx.237 | 2882 | 1 | 1 | zone1 | ReadWrite | default_region | 1 | 1 | 14495514624 | 10000 | 10000 | 1 | 14495514624 | 11566525317 | 6071255040 | NORMAL | 2022-12-20 17:49:25.705315 |
| xx.xx.xx.237 | 2882 | 1002 | 1001 | zone1 | ReadWrite | default_region | NULL | NULL | 1073741824 | NULL | NULL | NULL | 1932735283 | 1520680069 | 7325351936 | NORMAL | 2022-12-20 18:04:31.692599 |
| xx.xx.xx.237 | 2882 | 1002 | 1002 | zone1 | ReadWrite | default_region | 1.5 | 1.5 | 5368709120 | 15000 | 15000 | 1 | 17394617549 | 4845753295 | 595591168 | NORMAL | 2022-12-20 18:04:31.692599 |
| xx.xx.xx.237 | 2882 | 1014 | 1009 | zone1 | ReadWrite | default_region | NULL | NULL | 1073741824 | NULL | NULL | NULL | 1932735283 | 1495304058 | 5391777792 | NORMAL | 2022-12-26 18:28:38.059317 |
| xx.xx.xx.237 | 2882 | 1014 | 1010 | zone1 | ReadWrite | default_region | 1.5 | 1.5 | 5368709120 | 15000 | 15000 | 1 | 17394617549 | 3532357328 | 681574400 | NORMAL | 2022-12-26 18:28:38.059317 |
| xx.xx.xx.238 | 2882 | 2 | 1 | zone2 | ReadWrite | default_region | 1 | 1 | 14495514624 | 10000 | 10000 | 1 | 14495514624 | 11566567057 | 5947523072 | NORMAL | 2022-12-20 17:49:25.705354 |
| xx.xx.xx.238 | 2882 | 1003 | 1001 | zone2 | ReadWrite | default_region | NULL | NULL | 1073741824 | NULL | NULL | NULL | 1932735283 | 1520720157 | 7337934848 | NORMAL | 2022-12-20 18:04:31.693277 |
| xx.xx.xx.238 | 2882 | 1003 | 1002 | zone2 | ReadWrite | default_region | 1.5 | 1.5 | 5368709120 | 15000 | 15000 | 1 | 17394617549 | 4845759221 | 591396864 | NORMAL | 2022-12-20 18:04:31.693277 |
| xx.xx.xx.238 | 2882 | 1015 | 1009 | zone2 | ReadWrite | default_region | NULL | NULL | 1073741824 | NULL | NULL | NULL | 1932735283 | 1495346552 | 5364514816 | NORMAL | 2022-12-26 18:28:38.060042 |
| xx.xx.xx.238 | 2882 | 1015 | 1010 | zone2 | ReadWrite | default_region | 1.5 | 1.5 | 5368709120 | 15000 | 15000 | 1 | 17394617549 | 3532362696 | 681574400 | NORMAL | 2022-12-26 18:28:38.060042 |
+----------------+----------+---------+-----------+-------+-----------+----------------+---------+---------+-------------+----------+----------+-------------+---------------+-----------------+------------------+--------+----------------------------+
15 rows in set
GV$OB_UNITSビューのパラメータの詳細については、GV$OB_UNITSを参照してください。
ノードのリソース割り当て情報を確認する
GV$OB_SERVERSビューを使用すると、OBServerの情報を確認できます。例は以下のとおりです:
クエリ結果の1行目のデータを例に挙げると、ノードIP(SVR_IP)はxx.xx.xx.238、サーバポート番号(SVR_PORT)は2882、対応するzone名(zone)はzone2、SQLポート(SQL_PORT)は2881、observerプロセスで使用可能なCPU数(CPU_CAPACITY)は64C、observerプロセスで使用可能なメモリ(MEM_CAPACITY)は54G、割り当て済みメモリ(MEM_ASSIGNED)は27.5G、ログディスク総容量(LOG_DISK_CAPACITY)は167.25G、割り当て済みログディスク容量(LOG_DISK_ASSIGNED)は55G、ログディスク使用量(LOG_DISK_IN_USE)は22G、データディスク容量(DATA_DISK_CAPACITY)は167.25G、データディスク使用量(DATA_DISK_IN_USE)は18.89Gです。
obclient [oceanbase]> SELECT * FROM GV$OB_SERVERS;
+----------------+----------+-------+----------+--------------+------------------+--------------+------------------+--------------+--------------+-------------------+-------------------+-----------------+--------------------+------------------+-------------------------+--------------+-------------------------+-----------------------+
| SVR_IP | SVR_PORT | ZONE | SQL_PORT | CPU_CAPACITY | CPU_CAPACITY_MAX | CPU_ASSIGNED | CPU_ASSIGNED_MAX | MEM_CAPACITY | MEM_ASSIGNED | LOG_DISK_CAPACITY | LOG_DISK_ASSIGNED | LOG_DISK_IN_USE | DATA_DISK_CAPACITY | DATA_DISK_IN_USE | DATA_DISK_HEALTH_STATUS | MEMORY_LIMIT | DATA_DISK_ABNORMAL_TIME | SSL_CERT_EXPIRED_TIME |
+----------------+----------+-------+----------+--------------+------------------+--------------+------------------+--------------+--------------+-------------------+-------------------+-----------------+--------------------+------------------+-------------------------+--------------+-------------------------+-----------------------+
| xx.xx.xx.238 | 2882 | zone2 | 2881 | 64 | 64 | 5 | 5 | 57982058496 | 29527900160 | 179583320064 | 59592671232 | 23622320128 | 179593805824 | 20283654144 | NORMAL | 68719476736 | NULL | NULL |
| xx.xx.xx.237 | 2882 | zone1 | 2881 | 64 | 64 | 5 | 5 | 32212254720 | 29527900160 | 179583320064 | 59592671232 | 23622320128 | 179593805824 | 20443037696 | NORMAL | 85899345920 | NULL | NULL |
| xx.xx.xx.218 | 2882 | zone3 | 2881 | 64 | 64 | 4 | 4 | 57982058496 | 27380416512 | 179583320064 | 53150220288 | 19528679424 | 179593805824 | 20044578816 | NORMAL | 68719476736 | NULL | NULL |
+----------------+----------+-------+----------+--------------+------------------+--------------+------------------+--------------+--------------+-------------------+-------------------+-----------------+--------------------+------------------+-------------------------+--------------+-------------------------+-----------------------+
3 rows in set
GV$OB_SERVERSビューのパラメータの詳細については、GV$OB_SERVERSを参照してください。
テナントの各リソースグループのリアルタイムI/O統計情報を確認する
sysテナントはGV$OB_GROUP_IO_STATビューを使用して、すべてのOBServerノード上の各リソースグループのリアルタイムIOPSと帯域幅の統計情報をリアルタイムで確認できます。例:
obclient [oceanbase]> SELECT * FROM oceanbase.GV$OB_GROUP_IO_STAT WHERE TENANT_ID=1002 LIMIT 5;
クエリ結果は次のとおりです:
+-----------+----------------+----------+----------+-------------------+-------+----------+----------+-----------+-----------+-------------------+---------------------------+--------------------+----------------------------+
| TENANT_ID | SVR_IP | SVR_PORT | GROUP_ID | GROUP_NAME | MODE | MIN_IOPS | MAX_IOPS | NORM_IOPS | REAL_IOPS | MAX_NET_BANDWIDTH | MAX_NET_BANDWIDTH_DISPLAY | REAL_NET_BANDWIDTH | REAL_NET_BANDWIDTH_DISPLAY |
+-----------+----------------+----------+----------+-------------------+-------+----------+----------+-----------+-----------+-------------------+---------------------------+--------------------+----------------------------+
| 1002 | 172.xx.xxx.198 | 2882 | 0 | OTHER_GROUP | READ | 307 | 20000 | 0 | 0 | 50000000 | 47.684MB/s | 0 | 0B/s |
| 1002 | 172.xx.xxx.198 | 2882 | 0 | OTHER_GROUP | WRITE | 307 | 20000 | 0 | 0 | 50000000 | 47.684MB/s | 0 | 0B/s |
| 1002 | 172.xx.xxx.198 | 2882 | 10000 | interactive_group | READ | 307 | 18000 | 0 | 0 | 50000000 | 47.684MB/s | 0 | 0B/s |
| 1002 | 172.xx.xxx.198 | 2882 | 10000 | interactive_group | WRITE | 307 | 18000 | 0 | 0 | 50000000 | 47.684MB/s | 0 | 0B/s |
| 1002 | 172.xx.xxx.198 | 2882 | 10001 | batch_group | READ | 409 | 16000 | 0 | 0 | 50000000 | 47.684MB/s | 0 | 0B/s |
+-----------+----------------+----------+----------+-------------------+-------+----------+----------+-----------+-----------+-------------------+---------------------------+--------------------+----------------------------+
5 rows in set
クエリ結果において、OTHER_GROUPはシステム組み込みのリソースグループであり、interactive_groupとbatch_groupはカスタムリソースグループです。リソース管理計画の内容を設定する際、リソースグループがバインドされていない場合、デフォルトでシステム組み込みのリソースグループOTHER_GROUPが使用されます。
3行目の結果から、テナント1002の172.xx.xxx.198ノード上で、リソースグループinteractive_groupの読み取り操作の最小IOPSは307、最大IOPSは1800、現在の実際のIOPSは0、設定された最大ネットワーク帯域幅は47.684MB/s、現在のネットワーク帯域幅は0B/sであることがわかります。
テナントのFunctionレベルのバックグラウンドタスクのリアルタイムI/O統計情報を表示する
sysテナントはGV$OB_FUNCTION_IO_STATビューを使用して、すべてのOBServerノード上でFunctionレベルのI/O統計情報をリアルタイムで表示できます。例:
obclient [oceanbase]> SELECT * FROM oceanbase.GV$OB_FUNCTION_IO_STAT WHERE TENANT_ID=1002 LIMIT 5;
クエリ結果は次のとおりです:
+----------------+----------+-----------+------------------+--------------+------+-----------+-----------+-------------+-------------+----------+
| SVR_IP | SVR_PORT | TENANT_ID | FUNCTION_NAME | MODE | SIZE | REAL_IOPS | REAL_MBPS | SCHEDULE_US | IO_DELAY_US | TOTAL_US |
+----------------+----------+-----------+------------------+--------------+------+-----------+-----------+-------------+-------------+----------+
| 172.xx.xxx.198 | 2882 | 1002 | DEFAULT_FUNCTION | LOCAL READ | 0 | 0 | 0 | 0 | 0 | 0 |
| 172.xx.xxx.198 | 2882 | 1002 | DEFAULT_FUNCTION | LOCAL WRITE | 4096 | 2 | 0 | 20 | 142 | 178 |
| 172.xx.xxx.198 | 2882 | 1002 | DEFAULT_FUNCTION | REMOTE READ | 0 | 0 | 0 | 20 | 142 | 178 |
| 172.xx.xxx.198 | 2882 | 1002 | DEFAULT_FUNCTION | REMOTE WRITE | 0 | 0 | 0 | 20 | 142 | 178 |
| 172.xx.xxx.198 | 2882 | 1002 | COMPACTION_HIGH | LOCAL READ | 0 | 0 | 0 | 20 | 142 | 178 |
+----------------+----------+-----------+------------------+--------------+------+-----------+-----------+-------------+-------------+----------+
5 rows in set
クエリ結果において、COMPACTION_HIGHは定義されたMini MergeやDDL KV Mergeなどのタスクを指し、DEFAULT_FUNCTIONは定義済みのバックグラウンドタスク以外のすべてのバックグラウンドタスクを指します。
5行目の結果から、テナント1002が172.xx.xxx.198ノード上で実行したMini MergeやDDL KV Mergeなどのタスク(COMPACTION_HIGH)について、ローカル読み取りの平均I/Oサイズ(SIZE)は0、実際のIOPS(REAL_IOPS)は0、実際に使用される帯域幅(REAL_MBPS)は0MB/s、I/Oスケジューリングの平均消費時間(SCHEDULE_US)は20us、ディスクI/Oの平均実行時間(IO_DELAY_US)は142us、I/Oの全体的な平均実行時間(TOTAL_US)は178usであることがわかります。
テナントの論理リソース使用状況と制限の確認
sysテナントはGV$OB_TENANT_RESOURCE_LIMITビューを使用して、各ユニットにおけるテナントの論理リソース使用状況を確認できます。例:
obclient [oceanbase]> SELECT * FROM oceanbase.GV$OB_TENANT_RESOURCE_LIMIT WHERE TENANT_ID=1004;
クエリ結果は次のとおりです:
+----------------+----------+-----------+-------+---------------+---------------------+-----------------+----------------+-------------+----------------------+
| SVR_IP | SVR_PORT | TENANT_ID | ZONE | RESOURCE_NAME | CURRENT_UTILIZATION | MAX_UTILIZATION | RESERVED_VALUE | LIMIT_VALUE | EFFECTIVE_LIMIT_TYPE |
+----------------+----------+-----------+-------+---------------+---------------------+-----------------+----------------+-------------+----------------------+
| 172.xx.xxx.xxx | 2882 | 1004 | zone1 | ls | 2 | 2 | 0 | 13 | memory |
| 172.xx.xxx.xxx | 2882 | 1004 | zone1 | tablet | 656 | 656 | 0 | 100000 | configuration |
+----------------+----------+-----------+-------+---------------+---------------------+-----------------+----------------+-------------+----------------------+
2 rows in set
最初の行の結果から、テナント1004は172.xx.xxx.xxx:2882ノード上で現在2つのログストリーム(CURRENT_UTILIZATION)を持ち、同時に存在したことがある最大ログストリーム数(MAX_UTILIZATION)は2つ、作成可能な最大ログストリーム数(LIMIT_VALUE)は13であり、この13の上限値はテナントメモリ(memory)によって計算されていることがわかります。
2行目の結果から、テナント1004は172.xx.xxx.xxx:2882ノード上で現在656個のTABLET(CURRENT_UTILIZATION)を持ち、同時に存在したことがある最大TABLET数(MAX_UTILIZATION)は656個、作成可能な最大TABLET数(LIMIT_VALUE)は100000個であり、この100000の上限値はテナントメモリ(configuration)に基づいて計算されていることがわかります。
テナントが各ノード上で作成できる論理リソースは、さまざまな物理リソースや構成パラメータ値によって制限されるため、ビューGV$OB_TENANT_RESOURCE_LIMIT_DETAILを使用して、テナントの論理リソースに対する具体的な制限および各種制限の上限値をさらに確認できます。
obclient [oceanbase]> SELECT * FROM oceanbase.GV$OB_TENANT_RESOURCE_LIMIT_DETAIL WHERE TENANT_ID=1004;
クエリ結果は次のとおりです:
+----------------+----------+-----------+---------------+---------------+---------------------+
| SVR_IP | SVR_PORT | TENANT_ID | RESOURCE_NAME | LIMIT_TYPE | LIMIT_VALUE |
+----------------+----------+-----------+---------------+---------------+---------------------+
| 172.xx.xxx.xxx | 2882 | 1004 | ls | configuration | 90 |
| 172.xx.xxx.xxx | 2882 | 1004 | ls | memstore | 9223372036854775807 |
| 172.xx.xxx.xxx | 2882 | 1004 | ls | memory | 13 |
| 172.xx.xxx.xxx | 2882 | 1004 | ls | data_disk | 9223372036854775807 |
| 172.xx.xxx.xxx | 2882 | 1004 | ls | clog_disk | 32 |
| 172.xx.xxx.xxx | 2882 | 1004 | ls | cpu | 9223372036854775807 |
| 172.xx.xxx.xxx | 2882 | 1004 | tablet | configuration | 100000 |
| 172.xx.xxx.xxx | 2882 | 1004 | tablet | memstore | 9223372036854775807 |
| 172.xx.xxx.xxx | 2882 | 1004 | tablet | memory | 102400 |
| 172.xx.xxx.xxx | 2882 | 1004 | tablet | data_disk | 9223372036854775807 |
| 172.xx.xxx.xxx | 2882 | 1004 | tablet | clog_disk | 9223372036854775807 |
| 172.xx.xxx.xxx | 2882 | 1004 | tablet | cpu | 9223372036854775807 |
+----------------+----------+-----------+---------------+---------------+---------------------+
12 rows in set
クエリ結果から、テナント1004は172.xx.xxx.xxx:2882ノード上で、作成できるログストリーム数の制限要因は以下のとおりです(9223372036854775807は無制限を表します):
パラメータ(
configuration)による作成数の制限は90個です。テナントメモリ(
memory)による作成数の制限は13個です。ログディスク(
clog_disk)による作成数の制限は32個です。