
操作步骤
1、先创建表
CREATE TABLE T(A INT);
SP_SET_PARA_VALUE(1,'AUTO_STAT_OBJ',2);
3、对修改行数占总行数的百分比,达到STALE_PERCENT值时,收集T表对象统计信息。比如修改行数占到总行数的15%时,去收集它的统计信息。
DBMS_STATS.SET_TABLE_PREFS('SYSDBA','T','STALE_PERCENT',15);
4、查看指定模式下表的统计信息的静态参数对应的值,看是否设置成功。
select * from SYSSTATPREFS;

数据字典表SYSSTATPREFS的列值说明如下:

SP_CREATE_AUTO_STAT_TRIGGER(1, 1, 1, 1,'14:00:00', '2024/11/28',0,1);
select name,valid from SYSOBJECTS where subtype$='TRIG';

7、向T表中新增数据
INSERT INTO T SELECT LEVEL CONNECT BY LEVEL<=60;Commit;
8、查询触发器是否更新成功,可以看到T统计信息已经更新。T表中有60行新的数据。(需等待触发器执行后才有数据)。
SELECT * FROM SYSSTATTABLEIDU;

数据字典表SYSSTATTABLEIDU其相关列说明如下:

涉及相关的参数和函数说明

2、STALE_PERCENT函数说明
DBMS_STATS.SET_TABLE_PREFS(SYSDBA','T','STALE_PERCENT',15);
语法如下:
PROCEDURE SET_TABLE_PREFS (OWNNAME VARCHAR(128),TABNAME VARCHAR(128),PPNAME VARCHAR(128),PVALUE VARCHAR(128));
参数详解
-STALE_PERCENT决定表的统计信息过时且需要重收集统计信息时表的行数百分比。有效取值范围是非负数,默认值是 10,即一张表有超过 10%的数据改变则可认为统计信息过时。取值范围[0,100],该值置为 0 时,则认为需要将该表的 STALE_PERCENT的属性值消除。 -PREFERENCE_OVERRIDES_PARAMETER决定是否用静态属性值覆盖参数的输入值。为 TRUE 时,忽略参数的输入值,使用对应的属性值。为 FALSE 时,使用参数的输入值。
SP_CREATE_AUTO_STAT_TRIGGER(type int,freq_interval int,freq_sub_interval int,freq_minute_interval int,starttime varchar(128),during_start_date varchar(128),max_run_duration int,enable int)
功能说明:
参数说明:
1:按天的频率来执行; 2:按周的频率来执行; 3:在一个月的某一天执行; 4:在一个月的第一周第几天执行; 5:在一个月的第二周的第几天执行; 6:在一个月的第三周的第几天执行; 7:在一个月的第四周的第几天执行; 8:在一个月的最后一周的第几天执行。
freq_interval:与 type 有关,表示不同调度类型下的发生频率,默认为 1。具体说明如下:
当 type=1 时,表示每几天执行,取值范围为 1~100; 当 type=2 时,表示每几个星期执行,取值范围为 1~100; 当 type=3 时,表示每几个月中的某一天执行,取值范围为 1~100; 当 type=4 时,表示每几个月的第一周执行,取值范围为 1~100; 当 type=5 时,表示每几个月的第二周执行,取值范围为 1~100; 当 type=6 时,表示每几个月的第三周执行,取值范围为 1~100; 当 type=7 时,表示每几个月的第四周执行,取值范围为 1~100; 当 type=8 时,表示每几个月的最后一周执行,取值范围为 1~100。
当 type=1 时,这个值无效,系统不做检查; 当 type=2 时,表示某一个星期的星期几执行,可以同时选中七天中的任意几天,取值范围 1~127。具体可参考如下规则:因为每周有七天,所以 DM 数据库系统内部用七位二进制来表示选中的日子,从最低位开始算起,依次表示周日、周一到周五、周六。选中周几,就将该位置 1,否则置 0。例如,选中周二和周六,7 位二进制就是 1000100,转化成十进制就是 68,所以 FREQ_SUB_INTERVAL 取值 68; 当 type=3 时,表示将在一个月的第几天执行,取值范围 1~31; 当 type 为 4、5、6、7 或 8 时,都表示将在某一周内第几天执行,取值范围 1~7,分别表示从周一到周日。
本期关于自动收集及更新统计信息的介绍,你学会了吗?
以上为本期分享,希望能带给大家帮助。想要了解更多往期干货,可访问页面最下方#达梦技术干货攻略#合集或下方相关分享。在此邀请更多学员参与“达梦技术干货投稿活动”,稿件获选后将在达梦“干货分享”专栏进行发布,欢迎来稿!
【干货】SQL优化之LIKE CASE WHEN改写思路(一)
【干货】SQL优化之LIKE CASE WHEN改写思路(二)

文章转载自达梦E学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




