网站建设公告wordpress账号密码都正确登陆不
网站建设公告,wordpress账号密码都正确登陆不,最常见的网络营销方式,天津重型网站建设推荐前言在数据库性能优化过程中#xff0c;查看执行计划是排查SQL性能问题的关键步骤。达梦数据库#xff08;DM#xff09;提供了多种查看执行计划的方式#xff0c;下面结合达梦官方手册以及各位大佬的经验分享#xff0c;介绍每种方法的使用方法和适用场景。EXPLAIN 命令与…前言在数据库性能优化过程中查看执行计划是排查SQL性能问题的关键步骤。达梦数据库DM提供了多种查看执行计划的方式下面结合达梦官方手册以及各位大佬的经验分享介绍每种方法的使用方法和适用场景。EXPLAIN 命令与常用的数据库一样EXPLAIN命令是最简单、最常用的查看执行计划的方式直接在SQL前加 EXPLAIN 关键字即可explain select stu_id,stu_name,gender,birth_date,class,email from dmhs.students where stu_name zsExplain命令仅显示执行计划结构不包含详细统计信息适合快速查看SQL执行方式。ET() 函数通过执行号EXEC_ID回溯查看历史SQL的详细执行计划特别适合排查已执行SQL的性能问题。首先调用该函数设置会话级参数MONITOR_SQL_EXEC--动态打开会话级参数MONITOR_SQL_EXEC该设置只对本会话有效,其余会话无影响 SF_SET_SESSION_PARA_VALUE(MONITOR_SQL_EXEC,1);执行要进行分析的SQL语句select stu_id,stu_name,gender,birth_date,class,email from dmhs.students where stu_name zs依次点击“消息”“877”或者执行 et(877) 弹出如下的操作符执行时间对话框如上图所示该 sql 语句共涉及 6 个操作符按照执行的先后顺序分别是 SLCT2、PRJT2、DLCK、CSCN2、NSET2。其中耗时最长的操作符是 NSET2耗时 151微秒占总执行时间的 72.95%耗时排第二位的操作符是 CSCN2耗时 48 微秒占总执行时间的 23.19%。根据上述的分析我们就需要针对这 2 个操作符进行针对性的优化CSCN2全表扫描 (Complete Table Scan)NSET2嵌套循环集合操作 (Nested Loop Set)分析后发现SQL走了全表扫描说明stu_name列没有添加索引添加索引之后查询效率明显提高。CREATE OR REPLACE INDEX DMHS.IDX_STU_NAME ON DMHS.STUDENTS(STU_NAME ASC) STORAGE(ON MAIN, CLUSTERBTR) ;重新执行SQL语句AUTOTRACEAUTOTRACE功能可以同时显示执行计划和统计信息首先调用该函数设置会话级参数MONITOR_SQL_EXECSF_SET_SESSION_PARA_VALUE(MONITOR_SQL_EXEC,1);开启AUTOTRACESET AUTOTRACE TRACE;此功能与服务器 EXPLAIN 语句的区别在于EXPLAIN 只生成执行计划并不会真正执行 SQL 语句因此产生的执行计划有可能不准而通过 TRACE 获得的执行计划是服务器实际执行的计划可能是重用了计划缓存中计划也可能是新生成的计划。data pages changed : 更改的数据页数undo pages changed : 更改的 UNDO 日志页数logical reads : 逻辑读次数physical reads : 物理读次数redo size : REDO 日志大小bytes sent to client : 发给客户端的数据流量bytes received from client : 客户端接收的数据流量roundtrips to/from client : 客户端与服务器交互次数sorts (memory) : 最优排序次数sorts (disk) : 单路/多路归并排序次数rows processed : DML 操作影响的行数io wait time(ms) : I/O 等待时间exec time(ms) : 执行时间SQL 监控报告可视化程度最高的报告方式可显示估算行数与实际行数对比包含每个算子的执行时间线适合分析复杂SQL的执行过程。为了能够完整展示 SQL 监控报告特使用 SET 命令将将 DIsql 环境变量 LONG 设置成一个较大值 999999。SET LONG 999999;开启监控SF_SET_SESSION_PARA_VALUE(MONITOR_SQL_EXEC,1);执行SQL查询获取执行号select stu_id,stu_name,gender,birth_date,class,email from dmhs.students where stu_name zs; 已用时间: 0.518(毫秒). 执行号:2004根据 SQL 执行号来查询监控报告。select DBMS_SQLTUNE.REPORT_SQL_MONITOR(SQL_EXEC_ID2004) from dual;查询 SQL 监控报告链表select DBMS_SQLTUNE.REPORT_SQL_MONITOR_list() from dual;V$CACHEPLN通过系统视图查看SQL执行计划的缓存信息可以查看缓存中的执行计划支持导出详细计划到文件适合分析历史SQL的执行计划对于排查计划缓存相关问题很有帮助。查询缓存计划获取对应的CACHE_ITEMSELECT CACHE_ITEM, * FROM V$CACHEPLN where SQLSTR like %zs%;通过TRACE事件导出详细执行计划到服务器指定路径ALTER SESSION SET EVENTS immediate trace name plndump level 140399453839168,dump_file /dm/tmp/a1.log;导出内容如下