OceanBase数据字典视图学习与总结(MySQL模式)

打印 上一主题 下一主题

主题 986|帖子 986|积分 2958

OceanBase 数据库的系统视图分为字典视图和性能视图。其中字典视图就是描述数据字典的视图,OceanBase 数据库的字典视图包含 information_schema.* 视图、oceanbase.CDB_* 视图、oceanbase.DBA_*视图以及 mysql.* 视图。本文所涉及的版本主要为OceanBase4.1.0。
information_schema.* 视图
该类视图提供对 MySQL 租户中数据库元数据(包括:数据库或表的名称、列的数据类型或访问权限)的访问。称为数据字典或系统目录。这个视图类似MySQL数据库的information_schema,我们在MySQL中经常使用processlist、tables等查看当前连接,数据库表信息等,在oceanbase数据库中同样提供了这样的接口,这对MySQL DBA是比较方便的。可以看到,processlist和tables的表结构和MySQL里的也是如出一辙。
  1. MySQL [information_schema]> select * from processlist limit 3;
  2. +------------+------+------------------+--------------------+---------+-------+--------+-----------------------------------+
  3. | ID         | USER | HOST             | DB                 | COMMAND | TIME  | STATE  | INFO                              |
  4. +------------+------+------------------+--------------------+---------+-------+--------+-----------------------------------+
  5. | 1111111570 | root | 10.10.97.94:49426 | bghg               | Sleep   |  1430 | SLEEP  | NULL                              |
  6. | 1111119446 | root | 10.10.97.94:6786  | information_schema | Query   |     0 | ACTIVE | select * from processlist limit 3 |
  7. | 1111111020 | root | 10.10.97.84:59088 | oceanbase          | Sleep   | 24743 | SLEEP  | NULL                              |
  8. +------------+------+------------------+--------------------+---------+-------+--------+-----------------------------------+
  9. 3 rows in set (0.01 sec)
复制代码
  1. MySQL [information_schema]> desc tables;
  2. +-----------------+--------------------+------+-----+---------+-------+
  3. | Field           | Type               | Null | Key | Default | Extra |
  4. +-----------------+--------------------+------+-----+---------+-------+
  5. | TABLE_CATALOG   | varchar(3)         | NO   |     |         |       |
  6. | TABLE_SCHEMA    | varchar(128)       | NO   |     |         |       |
  7. | TABLE_NAME      | varchar(256)       | NO   |     |         |       |
  8. | TABLE_TYPE      | varchar(12)        | NO   |     |         |       |
  9. | ENGINE          | null               | NO   |     |         |       |
  10. | VERSION         | null               | NO   |     |         |       |
  11. | ROW_FORMAT      | null               | NO   |     |         |       |
  12. | TABLE_ROWS      | decimal(20,0)      | NO   |     |         |       |
  13. | AVG_ROW_LENGTH  | decimal(24,4)      | NO   |     |         |       |
  14. | DATA_LENGTH     | decimal(20,0)      | NO   |     |         |       |
  15. | MAX_DATA_LENGTH | null               | NO   |     |         |       |
  16. | INDEX_LENGTH    | null               | NO   |     |         |       |
  17. | DATA_FREE       | null               | NO   |     |         |       |
  18. | AUTO_INCREMENT  | null               | NO   |     |         |       |
  19. | CREATE_TIME     | timestamp(6)       | NO   |     | NULL    |       |
  20. | UPDATE_TIME     | timestamp(6)       | NO   |     | NULL    |       |
  21. | CHECK_TIME      | null               | NO   |     |         |       |
  22. | TABLE_COLLATION | varchar(128)       | NO   |     |         |       |
  23. | CHECKSUM        | bigint(0) unsigned | NO   |     |         |       |
  24. | CREATE_OPTIONS  | null               | NO   |     |         |       |
  25. | TABLE_COMMENT   | varchar(4096)      | NO   |     |         |       |
  26. +-----------------+--------------------+------+-----+---------+-------+
  27. 21 rows in set (0.02 sec)
复制代码
mysql.* 视图
这类视图其实也是放数据库里面元数据的的数据字典表,和MySQL类似,用的比较多的是mysql.user表,用来查数据库里的用户信息。
oceanbase.CDB_* 视图
从命名为CDB可以看出,这个视图是SYS租户下才能看到,从整个集群层面,获取全部租户的一些数据字典信息。oceanbase.CDB_TABLES展示了所有租户表的信息,oceanbase.CDB_OB_DATABASES展示所有租户的数据库元信息,oceanbase.CDB_TAB_PARTITIONS展示所有租户的分区表的一级分区信息。
oceanbase.DBA_*视图
该类视图可用于获取整个数据库中的所有相关信息。该类视图需要使用管理员权限访问。对应于oceanbase.CDB_* 视图,oceanbase.DBA_*视图更多的是用来描述租户级别的数据字典信息。比如oceanbase.DBA_OB_DATABASES展示的是租户级别的数据库元信息,对应于oceanbase.CDB_OB_DATABASES。oceanbase.DBA_TAB_PARTITIONS描述的是在当前租户下当前用户可访问的多级分区信息、分区存储参数和分区统计信息。
此外,也有部分oceanbase.DBA_*视图只能在SYS租户下才能访问到,这些主要都是集群层面的监控。oceanbase.DBA_OB_TENANTS,展示所有租户的基本信息(普通用户访问时只展示本租户的信息)。oceanbase.DBA_OB_SERVERS展示所有 OBServer 节点的信息,oceanbase.DBA_OB_ZONES展示所有 Zone 的信息。
值得注意的是oceanbase.DBA_*视图和大部分oceanbase.CDB_* 视图在4.0.0以下的版本是没有的。值得一提的是,3.x.x版本的oceanbase提供了很多__all_*视图,__all_server和oceanbase.DBA_OB_SERVERS功能类似,__all_telnet和oceanbase.DBA_OB_TENANTS功能类似。但是在OceanBase的官方文档中,并没有找到对__all_*视图的相关描述,白鳝老师也在他的文章中吐槽过ob的元数据藏得太深:https://mp.weixin.qq.com/s/gyxABzj7OY8o5vH-Kf0t2w 。这也是ob后续需要优化的一个方向吧。
  1. obclient> desc __all_server;
  2. +-----------------------+--------------+------+-----+----------------------+--------------------------------+
  3. | Field                 | Type         | Null | Key | Default              | Extra                          |
  4. +-----------------------+--------------+------+-----+----------------------+--------------------------------+
  5. | gmt_create            | timestamp(6) | YES  |     | CURRENT_TIMESTAMP(6) |                                |
  6. | gmt_modified          | timestamp(6) | YES  |     | CURRENT_TIMESTAMP(6) | ON UPDATE CURRENT_TIMESTAMP(6) |
  7. | svr_ip                | varchar(46)  | NO   | PRI | NULL                 |                                |
  8. | svr_port              | bigint(20)   | NO   | PRI | NULL                 |                                |
  9. | id                    | bigint(20)   | NO   |     | NULL                 |                                |
  10. | zone                  | varchar(128) | NO   |     | NULL                 |                                |
  11. | inner_port            | bigint(20)   | NO   |     | NULL                 |                                |
  12. | with_rootserver       | bigint(20)   | NO   |     | NULL                 |                                |
  13. | status                | varchar(64)  | NO   |     | NULL                 |                                |
  14. | block_migrate_in_time | bigint(20)   | NO   |     | NULL                 |                                |
  15. | build_version         | varchar(256) | NO   |     | NULL                 |                                |
  16. | stop_time             | bigint(20)   | NO   |     | 0                    |                                |
  17. | start_service_time    | bigint(20)   | NO   |     | NULL                 |                                |
  18. | first_sessid          | bigint(20)   | NO   |     | 0                    |                                |
  19. | with_partition        | bigint(20)   | NO   |     | 0                    |                                |
  20. | last_offline_time     | bigint(20)   | NO   |     | 0                    |                                |
  21. +-----------------------+--------------+------+-----+----------------------+--------------------------------+
  22. 16 rows in set (0.01 sec)
复制代码
  1. obclient> select * from __all_tenant limit 1 \G
  2. *************************** 1. row ***************************
  3.                  gmt_create: 2022-07-19 10:57:45.156936
  4.                gmt_modified: 2022-07-19 10:57:45.156936
  5.                   tenant_id: 1
  6.                 tenant_name: sys
  7.                 replica_num: -1
  8.                   zone_list: zone1;zone2;zone3
  9.                primary_zone: zone1;zone2,zone3
  10.                      locked: 0
  11.              collation_type: 0
  12.                        info: system tenant
  13.                   read_only: 0
  14.       rewrite_merge_version: 0
  15.                    locality: FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3
  16.         logonly_replica_num: 0
  17.           previous_locality: 
  18.      storage_format_version: 0
  19. storage_format_work_version: 0
  20.       default_tablegroup_id: -1
  21.          compatibility_mode: 0
  22.            drop_tenant_time: -1
  23.                      status: TENANT_STATUS_NORMAL
  24.               in_recyclebin: 0
  25. 1 row in set (0.00 sec)
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

勿忘初心做自己

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表