这种情况还是比较多用到的,前端反应系统慢,后端数据库出现大量的运行同一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也可以但是另一种方法,可见如下,用得少感觉:
http://blog.youkuaiyun.com/launch_225/article/details/23843745
本文介绍在不修改程序的前提下,如何使用SQLPROFILE和BASELINE技术来优化前端反应速度慢和后端数据库运行同一SQL慢的问题。通过提供具体的步骤和实例,演示如何快速调整SQL执行计划,提升系统性能。
1099

被折叠的 条评论
为什么被折叠?



