ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 624|回复: 13

新一代SQL调优产品 - 无需更改源代码即可进行智能SQL调优

[复制链接]
论坛徽章:
20
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:58马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:10:58
发表于 2018-5-15 10:01 | 显示全部楼层 |阅读模式
本帖最后由 richto 于 2018-5-17 18:11 编辑

新一代SQL调优产品 - 无需更改源代码即可进行智能SQL调优


理想的情况是程序源代码和SQL性能能够分离处理,数据库开发人员可以在不触及源代码的情况下管理SQL性能。 想象一下,如果您有一个源SQL必须部署到不同大小数据库,某些数据库可能运行性能良好,但其他一些数据库可能没有按预期好的性能执行, 这个问题很难处理。但随着Tosska最新的Auto-Hints-Injection技术,SQL语句可以通过SQL Patches或SQL Plan Baselines与我们的Hint Injection技术来调整,而无需更改源代码。 因此,不同大小的数据库可以使用不同的SQL Patches来实现特定的数据库性能调整目的。

例如; 下面的SQL语句用了6.17秒来完成执行
1.png


通过Tosska SQL TuningExpert Pro进行SQL调优后,发现以下提示注入可将SQL语句提高到99.51%。 用户需要做的是将包含原始SQL语句的SQL Patch部署到数据库; 并不需要修改任何源代码。
2.png

同样的SQL在SQL Plus中再次执行,现在的执行时间减少至0.04秒。 无需更改生产数据库中的任何源代码或程序安装。
3.png

欢迎来测试并提供建议
https://tosska.com/tosska-sql-tuning-expert-pro-tse-pro-for-oracle-download-free-trial/
你必须输入正确的电子邮件账户以获取试用码

Tosska SQL Tuning Expert Pro.pdf

1.09 MB, 下载次数: 6

论坛徽章:
399
优秀写手
日期:2013-12-18 09:29:08itpub13周年纪念徽章
日期:2014-09-28 10:55:55itpub13周年纪念徽章
日期:2014-10-01 15:27:22itpub13周年纪念徽章
日期:2014-10-09 12:04:18马上有钱
日期:2014-10-14 21:37:37马上有钱
日期:2015-01-22 00:39:13喜羊羊
日期:2015-02-20 22:26:07懒羊羊
日期:2015-02-21 22:03:31懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18
发表于 2018-5-15 20:56 来自手机 | 显示全部楼层
和newkid用过的是一回事?

使用道具 举报

回复
论坛徽章:
288
秀才
日期:2017-03-02 10:30:47布鲁克
日期:2016-10-08 10:06:50秀才
日期:2016-09-27 15:16:21秀才
日期:2016-09-27 15:11:30奥运会纪念徽章:自行车
日期:2016-09-26 15:54:59举人
日期:2016-06-24 09:25:21秀才
日期:2016-06-24 09:21:04双鱼座
日期:2016-06-15 17:14:38射手座
日期:2016-05-26 14:02:50白羊座
日期:2016-05-23 11:49:19
发表于 2018-5-15 21:47 | 显示全部楼层
行业专家,支持!

使用道具 举报

回复
论坛徽章:
496
目光如炬
日期:2015-11-22 22:00:00秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21探花
日期:2016-01-06 14:11:18进士
日期:2016-01-06 14:11:18
发表于 2018-5-16 02:55 | 显示全部楼层
新版界面好看了很多,看来是请了专业美工。
上次的测试版只允许查看前面30个SQL变种。这次我测试了几个都只有20多,所以不知道限制是否解除了。
最方便的改进是可以"Deploy Plan"并且Migrate。但是我测试的时候Deploy Plan Baseline 都是灰色不可选,不知道是怎么回事?Deploy SQL Patch可以用。
关于这个功能想请教一下,就是来自存储过程的SQL都是被PL/SQL格式化过的,根本没法读,所以在调试时一般都会再次格式化,至少分多行书写。这时候SQL_ID会变。在这种情况下,还能将SQL PATCH/BASELINE 进行发布吗?

使用道具 举报

回复
论坛徽章:
20
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:58马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:10:58
 楼主| 发表于 2018-5-16 10:54 | 显示全部楼层
本帖最后由 richto 于 2018-5-16 10:58 编辑

新版界面好看了很多,看来是请了专业美工。
Thank you Newkid, we have more time to do this


上次的测试版只允许查看前面30个SQL变种。这次我测试了几个都只有20多,所以不知道限制是否解除了。
You can enable more alternatives in Option window "IntelligentLevel -> Disregard SQL alternatives with cost > 50 times of Original SQL.For simple SQL, this option help to reduce the number of alternatives generation and save you some time in test running. For complex SQL or SQL that you cannotfind better alternative, you can enable it, for certain situations, some highest cost SQL alternatives may have good performance.

最方便的改进是可以"Deploy Plan"并且Migrate。但是我测试的时候Deploy PlanBaseline 都是灰色不可选,不知道是怎么回事?Deploy SQL Patch可以用。
You can enable Plan Baseline in Option window -> Deploy Plan
We recommend use SQL Patches, since it is better than Plan Baselines.SQL Patches is more flexible to accept different kind of Hints combinations such as parallel hint.


关于这个功能想请教一下,就是来自存储过程的SQL都是被PL/SQL格式化过的,根本没法读,所以在调试时一般都会再次格式化,至少分多行书写。这时候SQL_ID会变。在这种情况下,还能将SQL PATCH/BASELINE 进行发布吗?
Yes, you can use SQL Patches or Plan Baseline to optimize the SQL without the need to change your PL/SQL code. You can capture those SQL from SGA or use our Find SQL function to find the executed SQL text. Here is the information from our Help manual.

Find SQL

Find SQL is used to find the exact SQL text that is executed by Oracle. If user want to tune a SQL from PL/SQL or other program sources by SQL Patches or Plan Baselines, user must find out the exact SQL text that Oracle is used to execute in SGA. TSE Pro provide a handy Find SQL function to help user to findsimilar SQL statements from SGA and user can select the exact SQL text to be tuned by TSE Pro.

For example the SQL in the following PL/SQL code is not the exact SQL text thatO racle is used to execute.

DECLARE
   a int; bint;
begin
   a:=123123233;
   select count(*) into b from employee where emp_id<a;
end;

User can paste the SQL statement into the SQL Editor of Tune SQL and press Find SQL tofind similar SQL from SGA. The following SQL is the exact SQL text that will appear on the Similar SQLs list in Find SQL window.

SELECT COUNT(*) FROM EMPLOYEE WHERE EMP_ID<:B1

Refresh

This button is used to extract SQL from Oracle SGA again for the SQL which is just executed by user's program.



使用道具 举报

回复
论坛徽章:
496
目光如炬
日期:2015-11-22 22:00:00秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21探花
日期:2016-01-06 14:11:18进士
日期:2016-01-06 14:11:18
发表于 2018-5-16 23:35 | 显示全部楼层
找到你六年前写的一篇文章,当时是不推荐SQL PATCH的。现在观点变了吗?为什么呢?
https://community.toadworld.com/ ... -sql-plan-baselines

使用道具 举报

回复
论坛徽章:
20
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:58马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:10:58
 楼主| 发表于 2018-5-17 11:21 | 显示全部楼层


Yes, I changed my mind.


If you can see this link:

https://blogs.oracle.com/optimizer/adding-and-disabling-hints-using-sql-patch


"FromOracle Database 12c Release 2, the interface to SQL Patch is greatly improvedand easier to use. In particular, it’s now part of the public API and the hinttext is a CLOB (because VARCHAR2 can be too limiting if you want to specify acomplete query outline). The API includes a new SQL_ID parameter too. Check outthe documentation for thedetails, but here’s an example of the new look:"


SQL Patches now come with public API, better documentation (maybe they saw my comments)

I compared SQL Patches with Plan Baselines and SQL Profiles, Ifound SQL Patches is much better in accepting different hints combinations. Itis very important for manual Hints injection, if you use it to influence databaseSQL optimizer to generate a better plan for a problematic SQL statement.


使用道具 举报

回复
论坛徽章:
399
优秀写手
日期:2013-12-18 09:29:08itpub13周年纪念徽章
日期:2014-09-28 10:55:55itpub13周年纪念徽章
日期:2014-10-01 15:27:22itpub13周年纪念徽章
日期:2014-10-09 12:04:18马上有钱
日期:2014-10-14 21:37:37马上有钱
日期:2015-01-22 00:39:13喜羊羊
日期:2015-02-20 22:26:07懒羊羊
日期:2015-02-21 22:03:31懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18
发表于 2018-5-17 14:23 | 显示全部楼层
代码编辑器字体要用等宽的

使用道具 举报

回复
论坛徽章:
20
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:58马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:10:58
 楼主| 发表于 2018-5-17 15:47 | 显示全部楼层
〇〇 发表于 2018-5-17 14:23
代码编辑器字体要用等宽的

Thanks, I will tell our developers for this recommendation.

使用道具 举报

回复
论坛徽章:
496
目光如炬
日期:2015-11-22 22:00:00秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21探花
日期:2016-01-06 14:11:18进士
日期:2016-01-06 14:11:18
发表于 2018-5-17 22:03 | 显示全部楼层
richto 发表于 2018-5-17 11:21
Yes, I changed my mind.

If you can see this link:

我在我们的QA库上试了一下,结果把我们的GOLDEN GATE复制搞趴下了。
原因是你的软件会临时创建一个TOSSKA_STAGTAB_SQLPATCH表。我们有一套审计机制,对于所有新建表都要建立对应的审计表,结果 CREATE AS SELECT 出了错,因为这个表里面有LONG类型。我手工创建了表,又碰到另外一个问题,因为我们的审计表要求按日期INTERVAL分区,而包含LONG的表没办法做此分区。
ORACLE如果要改进这个功能,应该做彻底一点,都12.2了还用LONG类型?

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表