SQL优化【基础05】 - 固定计划,不修改程序(sql profile,baseline)
标签: SQL优化【基础05】 - 固定计划,不修改程序(sql profile baseline) HarmonyOS博客 51CTO博客
2023-05-24 18:24:13 160浏览
这种情况还是比较多用到的,前端反应系统慢,后端数据库出现大量的运行同一SQL慢的会话,出现等待事件,在不改程序
的前提下,使用固定计划最直接和临时的方案;下面涉及2种方法:SQL PROFILE和BASELINE,其它方法用得少;
第1种方法:使用SQL PROFILE固定,直接看图即可;



获取修改后的SQL_ID和PHV值

获取未修改前的SQL_ID,PHV值

切换到有权限的用户下执行脚本*.sql sql_id phv(脚本下载地址:我的上传资源,BAIDU或者催华空间:
http://www.dbsnake.net/wp-content/uploads/2012/08/coe_xfr_sql_profile.sql_.txt

生成了一个.SQL文件coe_xfr_sql_profile_sql_id_phv.sql
(老的SQL_ID,PHV)

(新的SQL_ID,PHV)

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

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

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

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

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

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

2650结尾的计划是全表扫

7011结尾的是索引扫瞄

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

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

有些人可能会问如果像JAVA一样的带有绑定变量的SQL呢,其实是一样的,假定原来 的程序SQL_ID和PHV为S1,PHV1,
通过人工传进变量实际执行的SQL_ID和PHV为S2,PHV2,然后按第1种方法即可,用BASELINE也可以但是另一种方法,可见如下,用得少感觉:
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论
您可能感兴趣的博客
