基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
设置功能
更新时间:2023-07-18 17:25:58
统计信息的设置功能是指通过使用 DBMS_STATS 系统包下的存储过程手工方式去设定表级、列级的基本统计信息。
说明
目前还暂不支持设置列级的直方图信息。
OceanBase 数据库目前支持对表与列设置统计信息,具体使方的方式:
使用存储过程
set_table_stats设置表级的基本统计信息。使用存储过程
set_column_stats设置列级的基本统计信息。
具体的存储过程定义如下:
PROCEDURE set_table_stats (
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
numrows NUMBER DEFAULT NULL,
numblks NUMBER DEFAULT NULL,
avgrlen NUMBER DEFAULT NULL,
flags NUMBER DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT FALSE,
cachedblk NUMBER DEFAULT NULL,
cachehit NUMBER DEFAULT NULL,
force BOOLEAN DEFAULT FALSE
);
PROCEDURE set_column_stats (
ownname VARCHAR2,
tabname VARCHAR2,
colname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
distcnt NUMBER DEFAULT NULL,
density NUMBER DEFAULT NULL,
nullcnt NUMBER DEFAULT NULL,
epc NUMBER DEFAULT NULL,
minval RAW DEFAULT NULL,
maxval RAW DEFAULT NULL,
bkvals NUMARRAY DEFAULT NULL,
novals NUMARRAY DEFAULT NULL,
chvals CHARARRAY DEFAULT NULL,
eavals RAWARRAY DEFAULT NULL,
rpcnts NUMARRAY DEFAULT NULL,
eavs NUMBER DEFAULT NULL,
avgclen NUMBER DEFAULT NULL,
flags NUMBER DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT FALSE,
force BOOLEAN DEFAULT FALSE
);
参数解释如下表所示。
| 参数 | 解释 |
|---|---|
| ownname | 用户名。如果用户名设置为 NULL,会默认使用当前登录用户名。 |
| tabname | 表名。 |
| partname | 分区名。 |
| colname | 列名。 |
| numrows | 表级的总行数。 |
| avgrlen | 表级的平均行。 |
| distcnt | 列级的 NDV 值。 |
| density | 列级的稠密度。 |
| nullcnt | 列级的 NULL 值个数。 |
| avgclen | 列级的平均长度。 |
| force | 是否强制删除,并忽略锁的状态。默认为 FALSE。 |
统计信息设置功能的示例如下:
设置用户
user1的表tbl1的总行数为一万行。CALL dbms_stats.set_table_stats('user1', 'tbl1', numrows=>10000);设置用户
user1的表tbl1的col1列的 NDV 为 10,NULL值个数为 10。CALL dbms_stats.set_column_stats('user1', 'tbl1', 'col1', distcnt=>10, nullcnt=>10);