- 浏览: 414797 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (203)
- 管理 (9)
- 情感 (3)
- 技术 (43)
- jfreeChart (5)
- unix (6)
- webService (3)
- 权限管理 (2)
- spring (3)
- log4j (2)
- java性能测试 (2)
- dwr (1)
- 数据迁移 (4)
- derby数据库基础 (1)
- jsp前台 (4)
- 线程 (6)
- 企业信息化 (2)
- 技术基础 (2)
- 经典算法 (1)
- 数据库性能 (7)
- 个人规划 (8)
- xml (2)
- ftp传输 (1)
- socket (3)
- java技术之正则表达式 (2)
- java技术之io操作 (1)
- java技术之常用命令程序使用方法 (1)
- interview (8)
- eclipse插件安装 (3)
- UML (1)
- oracle (29)
- java (3)
- 航空信息 (3)
- 读书 (1)
- Intellij idea (0)
- linux (24)
- 服务器架构 (4)
- weblogic (3)
最新评论
-
tuspark:
关于eclipse插件安装方法,这里文章图文并茂,讲解的最详细 ...
eclipse插件安装方法总结 -
swanky_yao:
非常不错 受益匪浅
j2ee异常处理机制 -
菜鸟不再菜:
如果能拿一个项目的例子来说明一下就好了~
j2ee异常处理机制 -
Q.Lee:
不出现异常了,但是访问http://localhost:808 ...
dwr使用异常 -
Q.Lee:
崩溃。。。。。
dwr使用异常
在Oracle10g之前,优化SQL是个比较费力的技术活,不停的分析执行计划,加hint,分析统计信息等等。在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning Advisor :STA),它是新的DBMS_SQLTUNE包。使用STA一定要保证优化器是CBO模式下。 执行DBMS_SQLTUNE包进行sql优化需要有advisor的权限: SQL> create user dave identified by dave; 用户已创建。 SQL> grant connect,resource to dave; 授权成功。 SQL> grant advisor to dave; 授权成功。 下面简单介绍一下如何优化一条找到的问题语句。 create table bigtab as select rownum as "id",a.* from sys.all_objects a; create table smalltab as select rownum as "id", a.* FROM sys.all_tables a; 然后多运行几次下面的脚本,增加表里的数据: insert into bigtab select rownum as "id",a.* from sys.all_objects a; insert into smalltab select rownum as "id", a.* FROM sys.all_tables a; 这里创建一张大表和一张小表,并且都没有索引,下面执行一个查询: SQL> set timing on SQL> set autot on SQL> select count(*) from bigtab a, smalltab b where a.object_name=b.table_name; COUNT(*) ---------- 2141537 已用时间: 00: 00: 20.05 执行计划 ---------------------------------------------------------- Plan hash value: 3089226980 -------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 45 | 3146 (1)| 00:00:38 | | 1 | SORT AGGREGATE | | 1 | 45 | | | |* 2 | HASH JOIN | | 447K| 19M| 3146 (1)| 00:00:38 | | 3 | TABLE ACCESS FULL| SMALLTAB | 27327 | 533K| 264 (1)| 00:00:04 | | 4 | TABLE ACCESS FULL| BIGTAB | 712K| 16M| 2878 (1)| 00:00:35 | -------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access("A"."OBJECT_NAME"="B"."TABLE_NAME") 统计信息 ---------------------------------------------------------- 0 recursive calls 0 db block gets 31149 consistent gets 21058 physical reads 0 redo size 426 bytes sent via SQL*Net to client 416 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed 第一步:创建优化任务 通过调用函数CREATE_TUNING_TASK来创建优化任务,调用存储过程EXECUTE_TUNING_TASK执行该任务: SQL> set autot off SQL> set timing off SQL> DECLARE 2 my_task_name VARCHAR2(30); 3 my_sqltext CLOB; 4 BEGIN 5 my_sqltext := 'select count(*) from bigtab a, smalltab b where a.object_name=b.table_name'; 6 my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK( 7 sql_text => my_sqltext, 8 user_name => 'DAVE', -- 注意是大写,不然会报错,用户无效 9 scope => 'COMPREHENSIVE', 10 time_limit => 60, 11 task_name => 'tuning_sql_test', 12 description => 'Task to tune a query on a specified table'); 13 14 --DBMS_SQLTUNE.EXECUTE_TUNING_TASK( task_name => 'tuning_sql_test'); 15 END; 16 / PL/SQL procedure successfully completed. 在函数CREATE_TUNING_TASK,sql_text是需要优化的语句,user_name是该语句通过哪个用户执行,scope是优化范围(limited或comprehensive),time_limit优化过程的时间限制,task_name优化任务名称,description优化任务描述。 第二步: 执行优化任务 通过调用dbms_sqltune.execute_tuning_task过程来执行前面创建好的优化任务。 SQL> exec dbms_sqltune.execute_tuning_task('tuning_sql_test'); PL/SQL 过程已成功完成。 第三步:检查优化任务的状态 通过查看user_advisor_tasks/dba_advisor_tasks视图可以查看优化任务的当前状态。 SQL> SELECT task_name,status FROM USER_ADVISOR_TASKS WHERE task_name ='tuning_sql_test'; TASK_NAME STATUS ------------------------------ ----------- tuning_sql_test COMPLETED 第四步:查看优化结果 通过dbms_sqltune.report_tning_task函数可以获得优化任务的结果。 SQL> SET LONG 999999 SQL> set serveroutput on size 999999 SQL> SET LINESIZE 100 SQL> SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK( 'tuning_sql_test') from DUAL; DBMS_SQLTUNE.REPORT_TUNING_TASK('TUNING_SQL_TEST') ---------------------------------------------------------------------------------------------------- GENERAL INFORMATION SECTION ------------------------------------------------------------------------------- Tuning Task Name : tuning_sql_test Tuning Task Owner : DEMO Scope : COMPREHENSIVE Time Limit(seconds) : 60 Completion Status : COMPLETED Started at : 5/28/2010 13:16:43 Completed at : 5/28/2010 13:16:44 Number of Index Findings : 1 Schema Name: DEMO SQL ID : 6p64dnnsqf9pm SQL Text : select count(*) from bigtab a, smalltab b where a.object_name=b.table_name ------------------------------------------------------------------------------- FINDINGS SECTION (1 finding) ------------------------------------------------------------------------------- 1- Index Finding (see explain plans section below) The execution plan of this statement can be improved by creating one or more indices. Recommendation (estimated benefit: 100%) ---------------------------------------- - Consider running the Access Advisor to improve the physical schema design or creating the recommended index. create index DEMO.IDX$$_06C50001 on SYS.SMALLTAB('TABLE_NAME'); - Consider running the Access Advisor to improve the physical schema design or creating the recommended index. create index DEMO.IDX$$_06C50002 on SYS.BIGTAB('OBJECT_NAME'); Rationale --------- Creating the recommended indices significantly improves the execution plan of this statement. However, it might be preferable to run "Access Advisor" using a representative SQL workload as opposed to a single statement. This will allow to get comprehensive index recommendations which takes into account index maintenance overhead and additional space consumption. EXPLAIN PLANS SECTION ------------------------------------------------------------------------------- 1- Original ----------- Plan hash value: 3089226980 -------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 36 | 3550 (2)| 00:00:43 | | 1 | SORT AGGREGATE | | 1 | 36 | | | |* 2 | HASH JOIN | | 155K| 5462K| 3550 (2)| 00:00:43 | | 3 | TABLE ACCESS FULL| SMALLTAB | 1223 | 22014 | 11 (0)| 00:00:01 | | 4 | TABLE ACCESS FULL| BIGTAB | 1205K| 20M| 3526 (1)| 00:00:43 | -------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access("A"."OBJECT_NAME"="B"."TABLE_NAME") 2- Using New Indices -------------------- Plan hash value: 494801882 ----------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ----------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 36 | 1108 (3)| 00:00:14 | | 1 | SORT AGGREGATE | | 1 | 36 | | | |* 2 | HASH JOIN | | 155K| 5462K| 1108 (3)| 00:00:14 | | 3 | INDEX FAST FULL SCAN| IDX$$_06C50001 | 1223 | 22014 | 3 (0)| 00:00:01 | | 4 | INDEX FAST FULL SCAN| IDX$$_06C50002 | 1205K| 20M| 1093 (2)| 00:00:14 | ----------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access("A"."OBJECT_NAME"="B"."TABLE_NAME") ------------------------------------------------------------------------------ 看一下这个优化建议报告: 第一部分是关于这次优化任务的基本信息:如任务名称、执行时间、范围、涉及到的语句等等。 第二部分是关于这次优化任务的所找到的问题以及给出的优化建议。前面先给出了问题描述:可以通过建立更多的所引来提高性能;然后是建议的具体内容:在表smalltab的字段table_name上创建索引,在表bigtab的字段object_name上创建索引;最后是相关注意事项:此次优化虽然给出了创建索引的建议,但是最好通过SQL访问建议器(SQL Access Advisor SAA)结合整个数据库的工作量来深入分析,那样就能给出考虑了索引维护和空间消耗等因素的更加合理的建议。 最后,报告还给出了原有的查询计划,以及采用优化建议以后的查询计划的对比。可以看出COST值大大下降。 五、删除优化任务 通过调用dbms_sqltuen.drop_tuning_task可以删除已经存在的优化任务 SQL>exec dbms_sqltune.drop_tuning_task('tuning_sql_test'); 注: 整理自网络
PL/SQL procedure successfully completed.
发表评论
-
WIN10 下 IE11 F12开发者工具无法debug断点调试js
2016-03-03 12:26 10110前段时间买了新电脑,安装的是win10系统,开发程序时需要 ... -
更改ejs模板后缀.ejs为.html
2015-03-25 16:12 715app.engine('.html', require('e ... -
npm设置http代理
2015-03-25 15:32 1309node.js 的npm命令是node.js的包管理工具,安 ... -
ERROR Deployer not found: git
2015-03-23 01:39 0出现该问题基本原因是由于没有安装hexo-deployer- ... -
webstorm install
2015-03-22 23:36 950在安装hexo前,需要先安装webstorm,并通过web ... -
centos6 git github
2015-03-22 23:30 841git的出现让传统的svn陷入尴尬的境地,分布式的版本控制 ... -
centos6 nodejs install
2015-03-22 22:02 557准备命令: yum -y install gcc ma ... -
fcitx安装
2015-03-21 00:13 818CentOS安装fcitx方法 因为选择的是最小安装 ... -
_jspxFactory nullpointException
2012-11-01 11:12 1026exception org.apache.jas ... -
preparedstatement execute()操作成功!但是返回false
2012-10-22 10:58 2796boolean b = ps.execute();//这 ... -
谈谈对于技术面试的心得体验
2011-02-10 14:10 967只要是招一个技术人 ... -
eclipse3.4从svn导出后html中文乱码
2010-09-25 11:54 1814问题描述:从svn中check out一个工程,然后给工程设置 ... -
使用break+label配合跳出多重循环
2010-03-24 10:34 1742签语句是在某个语句前面加上个标识符以及一个冒号 . 标签在 b ... -
工程中使用java代码加载第三方jar文件
2010-03-24 10:33 4247package com.send.start; impo ... -
jar命令使用遇到问题
2010-03-24 10:32 1294jar cvfm stup.jar ../list.txt - ... -
数据库中取出的值判断
2010-03-05 16:56 1005//数据库中取出的值判断时,经常出现使用null和“”都判断不 ... -
批处理删除svn文件与clas文件
2010-03-04 11:01 1584package com.delete.dir; impo ... -
压缩与解压缩文档
2009-12-29 21:11 1289package com.sjs; import java ... -
java程序中调用数据库中的存储过程
2009-11-27 12:32 993public static void aa(String jo ... -
java代码实现运行cmd命令
2009-11-21 19:06 1906命令工厂: public class CommandFact ...
相关推荐
使用ORACLE SQL Tuning advisor快速优化低效的SQL语句, 这里是一个使用范例,有9个步骤, 后面 其他语句,都按照这个步骤来做就可以了。
关于oracle的SQL Tuning Advisor全面的使用介绍,包括分析awr、cursor、sql_set、sql文本中获取sql并且建立、执行、获取结果的方法。并且介绍了sql_set,sql_profile的操作。里面涉及到的内容都有可执行的代码。
而tuning模式则将高负载的SQL语句直接扔给优化器,优化器来自动对其进行详细的分析,调试并给出建议,这是Oracle 提供的Automatic Tuning Optimizer,即自动调整优化器。Oracle 自动调整优化器通过SQL调优建
oracle 10gADDM 和 SQL Tuning Advisor
SQL Tuning使用指南 QCO的SQL Tuning模块是一种功能强大的SQL语句分析、测试、优化工具,它可以贯穿Oracle数据库应用的整个生命周期,在开发阶段、试运行阶段和生产阶段帮助获得最佳SQL语句,以提高应用系统的...
Top-SQL Tuning SQL语句调整
SQL Tuning sqlServer,数据库教程, chm格式 英文版
SQL Tuning Advisor用一个调整工具集作为输入,检查其中的语句并为它们提出优化建议。Oracle 10g第二版(release 2)中增加了移动SQL Tuning Set的功能。使用一个中转表和DBMS_SQLTUNE类中的过程,你就可以从创建SQL...
一款针对Oracle SQL语句优化的工具,对于某些耗时的查询语句有很好的优化效果。该软件的优化手段是引入Oracle的hint功能,手动给查询语句指定更优的执行计划来达到优化效果。
Tosska SQL Tuning Expert (TSE™) 是一款优秀的SQL 调优工具,无需用户参与即可优化 SQL 语句。该产品将为您提供最终的 SQL 性能解决方案,只需点击鼠标即可。在整个 SQL 调优过程中,您不必进行分析、猜测或手工...
针对这种情况,人工智能自动SQL优化工具应运而生。现在我就向大家介绍这样一款工具:SQLTuning for SQL Server。 1. SQL Tuning 简介 SQL Turning是Quest公司出品的Quest Central软件中的一个工具。 QuestCentral...
oracle的sqltuning 课程,但资源有些老,04年的
sql tuning oracle sql tuning
Oracel SQL tuning Oracel SQL tuning Oracel SQL tuning Oracel SQL tuning Oracel SQL tuning Oracel SQL tuning
Oracle SQL Tuning with Oracle SQLTXPLAIN: Oracle Database 12c Edition by Stelios Charalambides English | 8 May 2017 | ISBN: 1484224353 | 408 Pages | PDF | 24.39 MB Learn through this practical guide ...
1. Database Tuning advisor (DTA) Enhancements 2. Column store indexes 3. Online index operations
SQL Tuning author Dan Tow outlines a timesaving method he's developed for finding the optimum execution plan--rapidly and systematically--regardless of the complexity of the SQL or the database ...
来源oracle官方ppt,讲解sql tuning技巧
自动SQL优化工具,用于解决SQL性能问题
sqltuning 英文版 sqltuning 英文版 sqltuning 英文版