当达梦sql monitor输出结果太多时(800行),不方便查看
可以考虑大力加工一下,思路是创建一个表,将结果输入进去,然后方便用sql进行排序和分析。
et知道某个步骤最耗时,但是不知道对象。
大力加工(创建一个表)
-- 达梦执行计划采样明细存储表CREATETABLEDM_SQL_PLAN_SAMPLE(IDINTNOTNULLCOMMENT'执行计划步骤ID',OPERATIONVARCHAR(64)NOTNULLCOMMENT'操作类型:CSCN2/INSERT2/SLCT2/UPDATE2等',OBJ_NAMEVARCHAR(128)COMMENT'数据库对象名(表/系统表/视图)',ROWS_ESTIMBIGINTCOMMENT'优化器预估行数',COSTBIGINTCOMMENT'执行计划成本值',TIME_ACTIVE_SECNUMERIC(20,10)COMMENT'步骤活跃耗时(秒)',START_ACTIVENUMERIC(20,10)COMMENT'步骤启动相对时间戳',EXECSINTCOMMENT'当前步骤执行次数',ROWS_ACTUALBIGINTCOMMENT'实际处理/返回行数',ACTIVITY_PCTNUMERIC(8,4)COMMENT'活动时间占比(%)',SAMPLE_COUNTBIGINTCOMMENT'Activity Detail 采样样本数',-- 扩展业务字段(可选,用于区分SQL、会话、采集时间)SQL_IDVARCHAR(32)COMMENT'对应SQL唯一标识',COLLECT_TIMEDATETIMEDEFAULTSYSDATECOMMENT'数据采集入库时间',SESSION_IDINTCOMMENT'会话ID');-- 建立索引,按SQL_ID+采集时间快速检索CREATEINDEXIDX_DM_PLAN_SAMPLE_SQLTIMEONDM_SQL_PLAN_SAMPLE(SQL_ID,COLLECT_TIME);-- 按对象名过滤索引CREATEINDEXIDX_DM_PLAN_SAMPLE_OBJONDM_SQL_PLAN_SAMPLE(OBJ_NAME);用ai工具将这些sql monitor信息整理为insert语句,到测试库里执行插入。
然后就可以在manager中执行各种排序
哦,原来是对SYSCOLUMNS进行了删除比较耗时。
top对象都是数据字典表。
插入动作最耗时。
对列和对象的插入删除占大头。数据字典是性能突破的瓶颈。