MatrixOne 数据库统计信息

MatrixOne 数据库统计信息是指数据库通过采样、统计出来的表、列的相关信息,例如,表的个数、表的列数、表所占的存储空间等。MatrixOne 数据库在生成执行计划时,需要根据统计信息进行估算,计算出最优的执行计划。

MatrixOne 数据库的统计信息维度如下:

查看数据库下表的个数

通过该命令,可以查看指定数据库下表的总数。

语法结构

  1. SHOW TABLE_NUMBER FROM {DATABASE_NAME}

示例

  • 示例 1:查看系统数据库 mo_catalog 下的表的总数:
  1. mysql> show table_number from mo_catalog;
  2. +--------------------------------+
  3. | Number of tables in mo_catalog |
  4. +--------------------------------+
  5. | 11 |
  6. +--------------------------------+
  7. -- 验证一下是哪些表
  8. mysql> use mo_catalog;
  9. mysql> show tables;
  10. +----------------------------+
  11. | Tables_in_mo_catalog |
  12. +----------------------------+
  13. | mo_user |
  14. | mo_account |
  15. | mo_role |
  16. | mo_user_grant |
  17. | mo_role_grant |
  18. | mo_role_privs |
  19. | mo_user_defined_function |
  20. | mo_columns |
  21. | mo_mysql_compatbility_mode |
  22. | mo_tables |
  23. | mo_database |
  24. +----------------------------+
  25. 11 rows in set (0.01 sec)
  • 示例 2:创建数据库,并创建了新的表,查询指定数据库下表的总数:
  1. create database demo_1;
  2. use demo_1;
  3. -- 创建三个新的表
  4. CREATE TABLE t1(a bigint, b varchar(10), c varchar(10));
  5. CREATE TABLE t2(a bigint, b int);
  6. CREATE TABLE t3(a int, b varchar(10), c varchar(10));
  7. -- 查询出数据库 demo_1 中有三个表
  8. mysql> show table_number from demo_1;
  9. +----------------------------+
  10. | Number of tables in demo_1 |
  11. +----------------------------+
  12. | 3 |
  13. +----------------------------+
  14. 1 row in set (0.01 sec)

查看表拥有的列数

通过该命令,可以查看指定表的总列数。

语法结构

  1. SHOW COLUMN_NUMBER FROM {[DATABASE_NAME.]TABLE_NAME}

示例

  1. use mo_catalog;
  2. use mo_user;
  3. mysql> show column_number from mo_user;
  4. +------------------------------+
  5. | Number of columns in mo_user |
  6. +------------------------------+
  7. | 11 |
  8. +------------------------------+
  9. -- 或者使用下面的命令
  10. mysql> show column_number from mo_catalog.mo_user;
  11. +------------------------------+
  12. | Number of columns in mo_user |
  13. +------------------------------+
  14. | 11 |
  15. +------------------------------+
  16. -- 查看验证有哪些列
  17. mysql> desc mo_catalog.mo_user;
  18. +-----------------------+--------------+------+------+---------+-------+---------+
  19. | Field | Type | Null | Key | Default | Extra | Comment |
  20. +-----------------------+--------------+------+------+---------+-------+---------+
  21. | user_id | INT | YES | | NULL | | |
  22. | user_host | VARCHAR(100) | YES | | NULL | | |
  23. | user_name | VARCHAR(300) | YES | | NULL | | |
  24. | authentication_string | VARCHAR(100) | YES | | NULL | | |
  25. | status | VARCHAR(8) | YES | | NULL | | |
  26. | created_time | TIMESTAMP | YES | | NULL | | |
  27. | expired_time | TIMESTAMP | YES | | NULL | | |
  28. | login_type | VARCHAR(16) | YES | | NULL | | |
  29. | creator | INT | YES | | NULL | | |
  30. | owner | INT | YES | | NULL | | |
  31. | default_role | INT | YES | | NULL | | |
  32. +-----------------------+--------------+------+------+---------+-------+---------+
  33. 11 rows in set (0.01 sec)

查看表中所有列包含的最大与最小值

通过该命令,可以查看指定表中的每一列的最大值与最小值。

Note: 如果指定表中各列值的数据类型不一致,则排序规则为:按照数字的大小排序;日期按照时间先后排序;字符类按照 ASCII 码排序;当几种数据类型混合排序时,非字符类型的则先转换为字符类型,然后按 ASCII 码排序。

语法结构

  1. SHOW TABLE_VALUES FROM {[DATABASE_NAME.]TABLE_NAME}

示例

  1. create table t1(
  2. col1 int,
  3. col2 float,
  4. col3 varchar
  5. );
  6. insert into t1 values(1,1.11,'1.111'),(2,2.22,'1.222'),(3,0,'abc');
  7. mysql> show table_values from t1;
  8. +-----------+-----------+-----------+-----------+-----------+-----------+
  9. | max(col1) | min(col1) | max(col2) | min(col2) | max(col3) | min(col3) |
  10. +-----------+-----------+-----------+-----------+-----------+-----------+
  11. | 3 | 1 | 2.22 | 0 | abc | 1.111 |
  12. +-----------+-----------+-----------+-----------+-----------+-----------+

查看表中的数据总行数

通过调用该函数,即可获得数据库中某张表的数据总行数。

语法结构

  1. MO_TABLE_ROWS({DATABASE_NAME},{TABLE_NAME})

示例

  1. -- 查询数据库 mo_catalog 下表 mo_tables 的总行数
  2. mysql> select mo_table_rows('mo_catalog','mo_tables');
  3. +--------------------------------------+
  4. | mo_table_rows(mo_catalog, mo_tables) |
  5. +--------------------------------------+
  6. | 64 |
  7. +--------------------------------------+

查看表在存储中占用的空间

通过调用该函数,即可获得数据库中某张表占用的存储空间,单位是字节数。

语法结构

  1. MO_TABLE_SIZE({DATABASE_NAME},{TABLE_NAME})

示例

  1. -- 查询数据库 mo_catalog 下表 mo_tables 占用的存储空间
  2. mysql> select mo_table_size('mo_catalog','mo_tables');
  3. +--------------------------------------+
  4. | mo_table_size(mo_catalog, mo_tables) |
  5. +--------------------------------------+
  6. | 16128 |
  7. +--------------------------------------+