统计信息的设置功能是指显示的去设定表级、列级的基本统计信息。
说明
目前还暂不支持设置列级的直方图信息。
OceanBase 数据库目前支持如下两种设置统计信息的方式:
- 使用存储过程
set_table_stats设置表级的基本统计信息。 - 使用存储过程
set_column_stats设置列级的基本统计信息。 - 使用存储过程
set_index_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
);
PROCEDURE SET_INDEX_STATS (
ownname VARCHAR2,
indname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
numrows NUMBER DEFAULT NULL,
numlblks NUMBER DEFAULT NULL,
numdist NUMBER DEFAULT NULL,
avglblk NUMBER DEFAULT NULL,
avgdblk NUMBER DEFAULT NULL,
clstfct NUMBER DEFAULT NULL,
indlevel NUMBER DEFAULT NULL,
flags NUMBER DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT FALSE,
guessq NUMBER DEFAULT NULL,
cachedblk NUMBER DEFAULT NULL,
cachehit NUMBER DEFAULT NULL,
force BOOLEAN DEFAULT FALSE,
avgrlen NUMBER DEFAULT NULL,
nummacroblks NUMBER DEFAULT NULL,
nummicroblks NUMBER DEFAULT NULL
);
参数解释如下表所示。
| 参数 | 解释 |
|---|---|
| ownname | 用户名。如果用户名设置为 NULL,会默认使用当前登录用户名。 |
| tabname | 表名。 |
| 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);设置用户
user1的索引idx1索引的相关信息。CALL DBMS_STATS.SET_INDEX_STATS('user1', 'idx1', numrows=>10, avgrlen=>10);
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




