欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > 手工收集统计信息

手工收集统计信息

2025/4/26 5:59:01 来源:https://blog.csdn.net/whn1977/article/details/147372835  浏览:    关键词:手工收集统计信息

有时想对某些表收集统计信息

CREATE OR REPLACE PROCEDURE GATHER_STATS
ASDECLAREV_SQL1 VARCHAR(1000);--表游标CURSOR C1 ISSELECT (SELECT USER) AS TABLE_OWNER,TABLE_NAMEFROM USER_TABLES;  --可以在这里加过滤条件--索引游标CURSOR C2 ISSELECT TABLE_OWNER,INDEX_NAMEFROM USER_INDEXESWHERE TABLE_OWNER IN (select USER);BEGIN--收集表统计信息FOR C IN C1LOOPV_SQL1 :='DBMS_STATS.GATHER_TABLE_STATS('''||C.TABLE_OWNER||''','''||C.TABLE_NAME||''',NULL,100,FALSE,''FOR ALL COLUMNS SIZE AUTO'',8,''AUTO'',FALSE);';EXECUTE IMMEDIATE V_SQL1;END LOOP;--收集索引统计信息FOR C IN C2LOOPV_SQL1 :='DBMS_STATS.GATHER_INDEX_STATS('''||C.TABLE_OWNER||''','''||C.INDEX_NAME||''',NULL,100,NULL,NULL,8);';EXECUTE IMMEDIATE V_SQL1;END LOOP;END;
/

执行方法:
在这里插入图片描述
表小就很快,表大就慢

看各用户占用空间

select username,round(user_used_space(username) * (select PARA_VALUE   FROM v$dm_ini where para_name ='GLOBAL_PAGE_SIZE')/1024/1024) USED_MB FROM dba_users;

在这里插入图片描述
收集统计信息的速度是 1分钟1G。

观察进展

SELECT TOP 10 AO.OWNER, SO.NAME AS "OBJECT_NAME", MAX(ST.LAST_GATHERED) AS "LAST_ANALYZED" FROM SYSSTATS ST,SYSOBJECTS SO,ALL_OBJECTS AOWHERE ST.ID=AO.OBJECT_IDAND SO.ID=AO.OBJECT_ID--AND AO.OWNER=(select user)
GROUP BY AO.OWNER, SO.NAME
ORDER BY 3 DESC;

在这里插入图片描述
最新的排在最上面,一般是表和索引。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词