达梦数据库-统计信息

千里之行始于足下,梦想不付之行动,终究是纸上谈兵

经过一段时间的达梦DCP培训让学习了好多支持点。让我对达梦的理解更加深刻。

今天为大家说一说达梦数据的统计信息

在介绍索引之前介绍一下统计信息 :因为添加索引的目的就是增强查询的效率。怎么去增强查询效率,数据库库会对表、列、索引会做一个统计信息。

对象统计信息描述数据是如何在数据库中存储的。统计信息是优化器的代价计算的依据,可以帮助优化器较精确地估算成本,对执行计划的选择起着至关重要的作用。

达梦的统计信息分为三类:表的统计信息、列的统计信息、索引的统计信息。

统计信息生成的过程分为三步:
1、确定采样的的数据:根据对象去分析数据 (表:计算表的行数、所占的页数目、平均记录长度、列:统计列数据的分布情况、索引:统计索引列的数据分布情况)

2、确定采样率:根据数据对象的大小,通过内部算法,确定数据的采样率。采样率与数据量成反比。

3、生成直方图:频率的直方图、等高直方图

查看统计信息

DBMS_STATS包 :收集统计信息,删除统计信息

1、column_stats_show 获取列的统计信息,返回列的统计信息,另一个时直方图的统计信息。
2、table_stats_show 获取表的统计信息。
3、index_stats_show 获取索引的统计信息。

GATHER_TABLE_STATS 收集表,表中的列,索引的统计信息其中对表:只手机表的总行数总页数,已经使用的页数等基本信息。
GATHER_INDEX_STATS 手机索引的统计信息。
GATHER_SCHEMA_STATS 收集模式下的对象统计信息。
DLETE_TABLE_STATS 删除表相关的统计信息。
DELETE_INDEX_STATS 删除索引的统计信息。
DELETE_COLUMN_STATS 删除列的统计信息。
UPDATE_ALL_STATS 更新统计信息。
CONVERT_RAW_VALUE 删除列的统计信息。

那些对象不支持统计信息:
1、外部表、DBLINK远程表 、动态视图表、临时表。
2、所在表空间为OFFLINE的对象。
3、位图索引、全文索引
4、数据类型:blob image clob text… 也不支持 自定义类型和空间类型也不支持。

第一次使用这DBMS_STATS包需要初始化一下。
sp_create_system_packages(1,'DBMS_STATS')
sp_create_system_packages(1,'DBMS_STATS'); --初始化系统包DBMS_STATS

CREATE TABLE TEST.T5 (ID INT,NAME VARCHAR(20));--创建一张表 写入数据来获取它的统计信息。

BEGIN
FOR I IN 1..999 LOOP
INSERT INTO TEST.T5 VALUES(I,'AAA'||I);
END LOOP;
commit;
END;  ---插入数据到表T5中

BEGIN
DBMS_STATS.table_stats_show('TEST','T5');
END  --使用 table_stats_show    获取表的统计信息。TEST时模式名 T5是表名  发现结果为空。


BEGIN
DBMS_STATS.GATHER_TABLE_STATS('TEST','T5') ;
END  --使用 GATHER_TABLE_STATS 来收集T5这张表的统计信息。

/*
NUM_ROWS 记录表的行数
LEAF_BLCOKS 记录表的总页数
LEAF_USED_BLOCKS 已经使用的页数
*/

–注意:更新统计信息需要在业务低谷的时候去操作。因为在高峰操作可能导致业务瘫痪。

–收集统计信息或更新统计信息。是对索引有更好的执行计划。

猜你喜欢

转载自blog.csdn.net/qq_33809566/article/details/107711101