Skip to content

MatrixOne 数据库统计信息

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

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

查看数据库下表的个数

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

语法结构

SHOW TABLE_NUMBER FROM {DATABASE_NAME}

示例

  • 示例 1:查看系统数据库 mo_catalog 下的表的总数:
mysql> show table_number from mo_catalog;
+--------------------------------+
| Number of tables in mo_catalog |
+--------------------------------+
|                             11 |
+--------------------------------+

-- 验证一下是哪些表
mysql> use mo_catalog;
mysql> show tables;
+----------------------------+
| Tables_in_mo_catalog       |
+----------------------------+
| mo_user                    |
| mo_account                 |
| mo_role                    |
| mo_user_grant              |
| mo_role_grant              |
| mo_role_privs              |
| mo_user_defined_function   |
| mo_columns                 |
| mo_mysql_compatbility_mode |
| mo_tables                  |
| mo_database                |
+----------------------------+
11 rows in set (0.01 sec)
  • 示例 2:创建数据库,并创建了新的表,查询指定数据库下表的总数:
create database demo_1;
use demo_1;
-- 创建三个新的表
CREATE TABLE t1(a bigint, b varchar(10), c varchar(10));
CREATE TABLE t2(a bigint, b int);
CREATE TABLE t3(a int, b varchar(10), c varchar(10));

-- 查询出数据库 demo_1 中有三个表
mysql> show table_number from demo_1;
+----------------------------+
| Number of tables in demo_1 |
+----------------------------+
|                          3 |
+----------------------------+
1 row in set (0.01 sec)

查看表拥有的列数

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

语法结构

SHOW COLUMN_NUMBER FROM {[DATABASE_NAME.]TABLE_NAME}

示例

use mo_catalog;
use mo_user;
mysql> show column_number from mo_user;
+------------------------------+
| Number of columns in mo_user |
+------------------------------+
|                           11 |
+------------------------------+

-- 或者使用下面的命令
mysql> show column_number from mo_catalog.mo_user;
+------------------------------+
| Number of columns in mo_user |
+------------------------------+
|                           11 |
+------------------------------+

-- 查看验证有哪些列
mysql> desc mo_catalog.mo_user;
+-----------------------+--------------+------+------+---------+-------+---------+
| Field                 | Type         | Null | Key  | Default | Extra | Comment |
+-----------------------+--------------+------+------+---------+-------+---------+
| user_id               | INT          | YES  |      | NULL    |       |         |
| user_host             | VARCHAR(100) | YES  |      | NULL    |       |         |
| user_name             | VARCHAR(300) | YES  |      | NULL    |       |         |
| authentication_string | VARCHAR(100) | YES  |      | NULL    |       |         |
| status                | VARCHAR(8)   | YES  |      | NULL    |       |         |
| created_time          | TIMESTAMP    | YES  |      | NULL    |       |         |
| expired_time          | TIMESTAMP    | YES  |      | NULL    |       |         |
| login_type            | VARCHAR(16)  | YES  |      | NULL    |       |         |
| creator               | INT          | YES  |      | NULL    |       |         |
| owner                 | INT          | YES  |      | NULL    |       |         |
| default_role          | INT          | YES  |      | NULL    |       |         |
+-----------------------+--------------+------+------+---------+-------+---------+
11 rows in set (0.01 sec)

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

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

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

语法结构

SHOW TABLE_VALUES FROM {[DATABASE_NAME.]TABLE_NAME}

示例

create table t1(
col1 int,
col2 float,
col3 varchar
);
insert into t1 values(1,1.11,'1.111'),(2,2.22,'1.222'),(3,0,'abc');

mysql> show table_values from t1;
+-----------+-----------+-----------+-----------+-----------+-----------+
| max(col1) | min(col1) | max(col2) | min(col2) | max(col3) | min(col3) |
+-----------+-----------+-----------+-----------+-----------+-----------+
|         3 |         1 |      2.22 |         0 | abc       | 1.111     |
+-----------+-----------+-----------+-----------+-----------+-----------+

查看表中的数据总行数

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

语法结构

MO_TABLE_ROWS({DATABASE_NAME},{TABLE_NAME})

示例

-- 查询数据库 mo_catalog 下表 mo_tables 的总行数
mysql> select mo_table_rows('mo_catalog','mo_tables');
+--------------------------------------+
| mo_table_rows(mo_catalog, mo_tables) |
+--------------------------------------+
|                                   64 |
+--------------------------------------+

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

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

语法结构

MO_TABLE_SIZE({DATABASE_NAME},{TABLE_NAME})

示例

-- 查询数据库 mo_catalog 下表 mo_tables 占用的存储空间
mysql> select mo_table_size('mo_catalog','mo_tables');
+--------------------------------------+
| mo_table_size(mo_catalog, mo_tables) |
+--------------------------------------+
|                                16128 |
+--------------------------------------+