暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分布式数据库学习Note65:OceanBase社区版中,设置功能如何使用?

统计信息的设置功能是指显示的去设定表级、列级的基本统计信息。

说明

目前还暂不支持设置列级的直方图信息。

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论