SQL优化【基础05】 - 固定计划,不修改程序(sql profile,baseline)

奋斗吧
奋斗吧
擅长邻域:未填写

标签: SQL优化【基础05】 - 固定计划,不修改程序(sql profile baseline) HarmonyOS博客 51CTO博客

2023-05-24 18:24:13 160浏览

SQL优化【基础05】 - 固定计划,不修改程序(sql profile,baseline),这种情况还是比较多用到的,前端反应系统慢


这种情况还是比较多用到的,前端反应系统慢,后端数据库出现大量的运行同一SQL慢的会话,出现等待事件,在不改程序

的前提下,使用固定计划最直接和临时的方案;下面涉及2种方法:SQL PROFILE和BASELINE,其它方法用得少;

第1种方法:使用SQL PROFILE固定,直接看图即可;

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_SQL



SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_sql_02



SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_sql_03


获取修改后的SQL_ID和PHV值

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_JAVA_04


获取未修改前的SQL_ID,PHV值

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_sql_05


切换到有权限的用户下执行脚本*.sql   sql_id   phv(脚本下载地址:我的上传资源,BAIDU或者催华空间:

http://www.dbsnake.net/wp-content/uploads/2012/08/coe_xfr_sql_profile.sql_.txt

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_SQL_06


生成了一个.SQL文件coe_xfr_sql_profile_sql_id_phv.sql

(老的SQL_ID,PHV)

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_SQL_07


(新的SQL_ID,PHV)

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_JAVA_08


在当前目录下生成了这两文件

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_JAVA_09


打开7726结尾文件,并COPY下面这段内容

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_JAVA_10


打开9974.SQL结尾的文件找到相对应的位置用新的替换掉;

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_JAVA_11


再次执行替换后的9974.SQL文件

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_JAVA_12


再次运行同样的SQL,可以看到计划已经变成我们固定的NL计划了;

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_JAVA_13


第二种方法:场景:同一个SQL_ID,有多个计划,但其中有一个是正确的,目标将此类SQL_ID固定在一个指定的好的计划上;

如下:此条SQL_ID有2个PHV

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_sql_14


2650结尾的计划是全表扫

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_JAVA_15


7011结尾的是索引扫瞄

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_SQL_16


目标是2个计划都固定在2650这个计划上,执行如下:

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_sql_17


再次运行同样的SQL,看红色部份已经有生效提示了;

SQL优化【基础05】 -  固定计划,不修改程序(sql profile,baseline)_sql_18


有些人可能会问如果像JAVA一样的带有绑定变量的SQL呢,其实是一样的,假定原来 的程序SQL_ID和PHV为S1,PHV1,

通过人工传进变量实际执行的SQL_ID和PHV为S2,PHV2,然后按第1种方法即可,用BASELINE也可以但是另一种方法,可见如下,用得少感觉:



好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695