为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:麒麟v10
【CPU】:arm架构
【问题描述】*:达梦v8集群,新增用户后,添加其他库表的只读访问权限,执行select * from all_tables 大约需要12秒钟才返回数据,但sysdba用户执行就很快。请问这种情况,怎么再不影响业务库的情况下,提高select时间
你是不是数据库对象非常多,如果是对象非常多的话,all_tables由于关联了太多表,所以性能差。
SELECT SCH.NAME OWNER, TAB.NAME, TAB.VALID
FROM SYSOBJECTS TAB
INNER JOIN SYSOBJECTS SCH
ON SCH.ID = TAB.SCHID
where TAB.TYPE$='SCHOBJ'
and TAB.SUBTYPE$ IN ('UTAB','STAB')
AND TAB.NAME NOT LIKE '_%$AUX' AND TAB.NAME NOT LIKE '_%$RAUX' AND TAB.NAME NOT LIKE '_%$DAUX' AND TAB.NAME NOT LIKE '_%$UAUX' AND TAB.NAME NOT LIKE '_%$ALOG' AND TAB.NAME NOT LIKE 'BIN$_%$_%'
AND TAB.INFO3 & 0x100000000 = 0;
这个剔除了不必要的关联,效率会比ALL_TABLES快
清理一下缓存计划

执行DBMS_STATS.GATHER_SCHEMA_STATS( 'SYS',100, FALSE, 'FOR ALL COLUMNS SIZE AUTO');再试下