By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Tuesday, May 14, 2013 1:20 PM
SQL transformation to enable more smart scans
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Monday, March 18, 2013 9:36 AM
I am working on some new transformation rules for Quest SQL Optimizer to maximize SQL performance for Oracle Exadata. It is interesting to investigate how subtle changes to SQL syntax can enable more offload operations to the storage server with corresponding improvements in execution time.
The following is one type of transformation that you might find useful.
SQL transformation to enable deeper...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, January 11, 2013 7:00 AM
Since version 8.7, our Quest SQL Optimizer has been enhanced to support Exadata. These enhancements focus on displaying smart scan and bloom filtering on both the original query plan and alternative plans.
I have been researching new rules exclusively for Exadata and have found that there are not many discussions on SQL tuning on an Exadata machine. We also have not spent a lot of effort on SQL transformation. With...
|
By Amit (User) on
10/1/2012 9:09 AM
We are excited to announce the upcoming release of Toad for Oracle version 11.6 which will be released tomorrow, Tuesday October 2nd, 2012. This blog serves as a early look at the updates and enhancements to Toad for Oracle v11.6 including its corresponding bundled components. Toad for Oracle is the most widely used database management solution on the market today with over 2 million users. Toad brings operational efficiency...
|
By a33eae33-0bda-4a72-817d-7f62e5f5cdcc on
Tuesday, September 18, 2012
Quest SQL Optimizer for Oracle automates the SQL optimization process and maximizes the performance of your SQL statements. SQL Optimizer analyzes, rewrites, and evaluates SQL statements located within database objects, files, or collections of SQL statements from Oracle's System Global Area (SGA) or Quest Software Foglight Performance Analysis for Oracle. Once SQL Optimizer identifies problematic SQL statements, it optimizes...
|
By a33eae33-0bda-4a72-817d-7f62e5f5cdcc on
Tuesday, June 19, 2012
Introduction
Quest SQL Optimizer for Oracle automates the SQL optimization process and maximizes the performance of your SQL statements. SQL Optimizer analyzes, rewrites, and evaluates SQL statements located within database objects, files, or collections of SQL statements from Oracle's System Global Area (SGA) or Quest Software Foglight Performance Analysis for Oracle. Once SQL Optimizer identifies problematic SQL...
|
By d4bdb6b5-40f4-4a7d-b53b-42a5881dce18 on
5/9/2012 12:00 PM
|
By d4bdb6b5-40f4-4a7d-b53b-42a5881dce18 on
5/9/2012 11:56 AM
|
By d4bdb6b5-40f4-4a7d-b53b-42a5881dce18 on
5/9/2012 11:50 AM
|
By d4bdb6b5-40f4-4a7d-b53b-42a5881dce18 on
5/8/2012 11:45 AM
|
By d4bdb6b5-40f4-4a7d-b53b-42a5881dce18 on
5/8/2012 11:09 AM
|
By d4bdb6b5-40f4-4a7d-b53b-42a5881dce18 on
5/7/2012 11:03 AM
|
By d4bdb6b5-40f4-4a7d-b53b-42a5881dce18 on
5/6/2012 10:42 AM
|
By d4bdb6b5-40f4-4a7d-b53b-42a5881dce18 on
5/4/2012 9:51 AM
|
By d4bdb6b5-40f4-4a7d-b53b-42a5881dce18 on
5/3/2012 10:17 AM
|
By d4bdb6b5-40f4-4a7d-b53b-42a5881dce18 on
5/3/2012 10:05 AM
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Monday, April 23, 2012 8:05 AM
I did not use to pay much attention to the update table in an UPDATE statement. I figured that there was not a lot I could do with an update table unless there were complex search conditions. I preferred to focus on the sub-queries that appear on the update table's filtering and the update SET command.
Today, I want to introduce a new transformation rule that is not implemented in our engine yet, but it is quite...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Monday, March 12, 2012 6:40 AM
Richard discusses why SQL tuning by SQL Plan Baselines is a safe and effective method to improve your SQL performance.
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, January 06, 2012 5:58 AM
What is a time-slot based SQL workload?
A SQL workload can come from different sources. For example, an executing program, a database SQL repository, or a monitoring tool that captures SQL from the database, memory, network or client programs. The way a representative SQL workload is formed will ultimately affect the result of a workload based index advisor or an impact analyzer. If you are using a monitoring tool...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Wednesday, November 30, 2011 7:29 AM
What is a workload based index advisor?
A workload based index advisor uses a specified SQL workload to recommend an optimal indexing configuration. The recommended indexes should be optimal for a specific workload that you are encountering every day. I believe most people know the meaning of workload based index optimization, but few of us really use it as a practice since it is too difficult for a human to...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Wednesday, November 02, 2011 5:53 AM
I have been performing research in the area of index optimization for more than 10 years and I'm pleased to announce that a new workload based index advisor is now available in Quest SQL Optimizer 8.5 for Oracle. The first index advisor algorithm I developed is still available in our SQL Rewrite module. This advisor was designed to work on a single SQL statement or a small set of SQL and does not consider workload. It embeds a large amount of human knowledge/rules to narrow down the index candidates in order speed up the search process. Rule/knowledge based index advisors can work well for small numbers of SQL where the index candidate space is relatively small but become ineffective when used on large SQL populations incorporating composite indexes and where index recommendations are based on actual application workload.
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Monday, September 12, 2011 3:55 AM
I have a dream to build the world's best index advisor that solves for any number of SQL statements, from one to thousands, and auto balances its recommendation based on actual workload. My research in this area was carried out almost 10 years ago and the research paper completed around 6 years ago but due to some reasons we have been unable to implement it - until now. I have not been so excited since I created my first...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Wednesday, July 27, 2011 7:20 AM
This blog is the ninth in a series about misconceptions surrounding SQL tuning that are quite common.
What are Hints?
Most database vendors provide a plan hints feature for users to influence their database SQL optimizer to generate a specific plan for a given SQL statement. Basically, every database vendor provides their own hints feature to correct their database SQL optimizer decisions in special...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Monday, May 16, 2011 10:02 AM
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Thursday, April 07, 2011 4:50 AM
A Data Warehouse (DW) is a database system used in an organization to collect data from one or more data sources and is typically used to generate reports or run ad-hoc queries that aggregate data for business analysis purposes. A DW generally consists of an ETL ( Extract, Transform, and Load) tool, a database, a reporting tool and other facilitating tools such as a data modeling tool. The nature of a DW is to store large quantities of data and utilize numerous B-tree indexes, bitmap indexes, views and materialized views to facilitate business professionals performing data mining, online analytical processing, market research and decision support.
In order to better utilize Quest SQL Optimizer features, I will categorize SQL into the following types with the corresponding method to shorten the time to tune a DW SQL.
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Thursday, March 03, 2011 6:12 AM
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Thursday, January 20, 2011 6:09 AM
A Data Warehouse (DW) is a database system used in an organization to collect data from one or more data sources and is typically used to generate reports or run ad-hoc queries that aggregate data for business analysis purposes. A DW generally consists of an ETL (Extract, Transform, and Load) tool, a database, a reporting tool and other facilitating tools such as a data modeling tool. The nature of a DW is to store large...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Monday, December 27, 2010 6:04 AM
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Tuesday, November 23, 2010 5:58 AM
This blog is the eighth in a series about misconceptions surrounding SQL tuning that are quite common.
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, November 05, 2010 8:01 AM
I have been asked many times how to use one source SQL statement and tune it for different sized databases. The problem is that when you have only one program source and you want to deploy it to various sized databases in different companies, it is quite common that the SQL performs well in company A but performs poorly in company B. If you tune the SQL for company B, the new SQL syntax and plan may not be good for...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Wednesday, September 22, 2010 8:13 AM
Plan Control SQL tuning was our main target for SQL Optimizer for Oracle V8 development over the past few months so the time available for the rewrite engine was limited. I planned to add sub-query factoring and sub-query de-factoring rules in this release but the complexity of those two rules is huge and there wasn’t time enough to complete them. So I selected two simpler rules from our rules library and incorporated them into SQL Optimizer Version 8. In terms of coding time, these two rules took just a few days to implement but the result is promising for some SQL statements that were not easy to improve by manual SQL tuning. For Part 1 of this blog entry I will discuss the first rule - Part 2 will discuss the second.
|
By a33eae33-0bda-4a72-817d-7f62e5f5cdcc on
Tuesday, September 21, 2010
A new Toad version is now available and before you try it out, I thought I’d give you a quick preview so you’ll be up to speed on what to look for.
Toad 10.0 (October 2009) introduced the beginning of a new generation of Toad releases which offer significant improvements in productivity to developers, DBAs and analysts.
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Monday, August 30, 2010 8:09 AM
I haven’t written anything in my blog in the last two months since I’ve been busy developing and testing the new version 8 of Quest SQL Optimizer for Oracle. It has been a long time since I’ve been as deeply involved in the development as I’ve been in last few months. In Chinese, “8” is a lucky number - it means prosperous and good luck. So we have put a lot of effort to make it happen and hope this new version will bring you prosperity and solve more SQL performance problems than ever before.
|
By BBoise (User) on
8/17/2010
I was recently demonstrating our SQL Optimizer for DB2 LUW solution when a question came up regarding comparing Access Plans in the Index Expert portion of the Optimizer. Excellent question indeed! However, before I go any further, perhaps a little background on the Index Expert is warranted.
The Index Expert allows you to simulate indexes for a SQL statement. We use our technology to generate virtual indexes (i.e....
|
By 3af06a42-3539-4a43-a783-c32b8143d5ef on
4/6/2010 7:48 AM
Republished from John Pocknell's Blog
I thought that’d grab your attention!
We know there are a lot of PL/SQL developers out there who are looking to make (or have already made) a break into application development using a more popular programming language like Java as well as many Java developers who use Toad to make access to Oracle easier.
According to a 2006 IOUG survey of Oracle sites,...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Tuesday, February 16, 2010 11:25 AM
Richard discusses a question from a user who tried our new SQL Optimizer 7.5.
|
By BBoise (User) on
1/6/2010
Using indexes can improve the performance of applications using the database. This is well known to many, many people. However, the application of too many indexes can have the reverse effect. There’s a balance that must be struck and you may find yourself needing to locate indexes that aren’t being used. If you’re already using the Quest SQL Optimizer for DB2 LUW, you can take advantage of the Index Usage Analyzer to help...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, October 02, 2009 3:59 AM
Version 7.5 of Quest SQL Optimizer for Oracle will be released in October. The major effort for this new release was in the optimizer engine and the new UI for the optimization, index generation and execution functions. The following is a screen shot of the new UI. It looks tidy and easier to use compared to the old version. All the statistics names now use the Oracle standard naming, so, users can easy understand each statistics...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, August 21, 2009 6:10 AM
Written by Rene Woody
This blog is a continuation of a series about test running the SQL statements in the Tuning Lab in Quest SQL Optimizer for Oracle to find the best performing SQL statement in your database environment. It covers the expectation that Quest SQL Optimizer will always be able to improve the performance of your SQL statements. ...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, August 07, 2009 6:16 AM
This blog is a continuation of a series about test running the SQL statements in the Tuning Lab in Quest SQL Optimizer for Oracle to find the best performing SQL statement in your database environment. It covers why the run time of a SQL statement may vary from one execution to the next.
When you execute a SQL statement several times in Quest SQL Optimizer, you may notice that the run time will vary from one execution to the next. This adds an additional challenge to picking out the best SQL statement from a group of alternative statements. ...
|
By BBoise (User) on
7/30/2009
I sometimes worry that people are confused about how to use the Quest SQL Optimizer for Oracle to help them tune their SQL statements. The solution is extremely powerful and provides you with the options to control numerous aspects of the optimization process. In fact, I suggest you read Richard To’s articles on Toad World to get an in depth understanding of the optimization process and the various settings within the SQL...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, July 24, 2009 6:57 AM
When selecting the best performing SQL statement for your application, how should disk I/O be weighed in comparison to the run time when you are selecting the best SQL alternative to replace your original SQL statement?
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, July 10, 2009 5:33 AM
A SQL statement with a variable that is provided at run time poses an extra challenge when trying to determine which alternative SQL statement is going to give the best overall performance. Each time the SQL statement is executed, a different variable could be supplied.
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, June 26, 2009 6:05 AM
This blog covers testing the SQL alternatives in a development environment when it is not possible to do extensive testing in the production environment.
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, June 12, 2009 5:27 AM
In Quest SQL Optimizer when you generate alternative SQL statements for your original SQL statement you may be presented with hundreds of SQL alternatives. The only way to be completely sure that you have the fastest one is to run all the SQL alternatives. But unless the SQL statements run relatively quickly, this is not always practical. So then you are left to determine which SQL statements you should select to test.
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, May 29, 2009 3:13 AM
When you are executing SQL statements to find which one is the best, you need to take into consideration the factors that can skew the accuracy of the results of the testing. This blog discusses eliminating the effect of network traffic when you are comparing SQL run times.
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, May 15, 2009 2:58 AM
When you are executing SQL statements to find which one is the best, you need to take into consideration the factors that can skew the accuracy of the results of the testing. This blog discusses minimizing the effect of other activities on the CPU when you are testing very fast running SQL statements.
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, May 01, 2009 4:56 AM
When you are executing SQL statements to find which one is the best, you need to take into consideration the factors that can skew the accuracy of the results of the testing. These factors include caching the data, caching the indexes, caching the SQL statement, other activities on the CPU, and network traffic.
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, April 17, 2009 2:37 AM
Written by Rene Woody
This blog is the first of a series about test running the SQL statements in the Tuning Lab in Quest SQL Optimizer for Oracle to find the best performing SQL statement in your database environment. It covers the options for terminating the SQL alternatives when they are executed in a batch.
The SQL optimization process in the Tuning Lab generates multiple alternative SQL statements that...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Monday, April 13, 2009 2:18 AM
Written by Rene Woody
This blog is a continuation of a series about the SQL optimization process in the Batch Optimizer and the Tuning Lab modules of Quest SQL Optimizer for Oracle. It explains how to generate SQL alternatives that do not have Oracle optimization hints.
Oracle provides optimization hints that can be added to the syntax of a SQL statements to attempt to influence the execution plan that the database optimizer will use to execute the SQL statement. Quest SQL Optimizer for Oracle uses this technique in its optimization process to generate more unique execution plans for your original SQL statement. For more information on how the SQL alternatives are generated, see this previous blog: Optimizing SQL Part 1 – The Optimization Process. ...
|
By Johannes (User) on
3/2/2009 6:04 AM
By Johannes Ahrends and John Pocknell
In the previous blog, we compared and contrasted how Database Maintenance operations are performed in Oracle’s Enterprise Manager (OEM) and Quest’s Toad DBA Suite for Oracle and how Toad is an excellent complement to OEM because it simplifies and automates many tasks which would take longer in OEM. ...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, February 13, 2009 6:16 AM
Written by Rene Woody
This blog is a continuation of a series about the SQL optimization process in the Batch Optimizer and the Tuning Lab modules of Quest SQL Optimizer for Oracle. It sheds some insight on why the SQL optimization process can take hours to run and what you can do to shorten the process.
SQL Statement...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Wednesday, February 04, 2009 10:35 AM
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, January 30, 2009 6:31 AM
Written by Rene Woody
This blog is a continuation of a series about the SQL optimization process in the Batch Optimizer and the Tuning Lab modules of Quest SQL Optimizer for Oracle. It explains the order in which the SQL statements are displayed.
After the optimization process is finished, the SQL alternatives are displayed in the order of their Oracle cost from the smallest cost to the largest. The Oracle cost is found in the execution plan and is generated by Oracle. The Oracle cost provides an estimate of the system resources that will be used by this execution plan to process the SQL statement. The theory is that the SQL statement with the lowest cost should be the best alternative. When actually testing the performance of alternative SQL statements in your database environment, you will find that frequently the SQL statements with the lowest cost are not the best performing SQL, since if Oracle cost estimation was correct for this SQL, you probably would not need to tune this SQL, so the best practice is to execute all the SQL alternatives to find the best one and not just assume that the SQL statement with the lowest estimate is the best. ...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, January 16, 2009 5:49 AM
Written by Rene Woody
This blog is a continuation of a series about the SQL optimization process in the Batch Optimizer and the Tuning Lab modules of Quest SQL Optimizer for Oracle. It covers the importance of finding the best “driving path” for retrieving rows from the database.
We’ll use a simple illustration of a Nested Loop...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, January 02, 2009 7:11 AM
Written by Rene Woody
This blog is a continuation of a series about the SQL optimization process in the Batch Optimizer and the Tuning Lab modules of Quest SQL Optimizer for Oracle. It explains how the Oracle optimization hints are applied to the SQL statements to generate more execution plans.
One technique that you can...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, December 19, 2008 12:16 PM
Recently, I received an email from the presales support team. They asked me to help them tune three SQL statements for a benchmark database provided by a customer. Our presales support said that our SQL Optimizer was not providing any alternatives for two of these three complex SQL statements. I found two of these SQL statements were very complicated and I knew that there should be a lot of alternative SQL generated. Finally,...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, November 21, 2008 5:54 AM
Written by Rene Woody
This blog is a continuation of a series about the SQL optimization process in the Batch Optimizer and the Tuning Lab modules of Quest SQL Optimizer for Oracle. It covers optimizing SQL statements that use VIEWs.
In early versions of the Oracle database, a VIEW was handled like a temporary table that...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Thursday, November 06, 2008 8:10 AM
Written by Rene Woody
This blog is a continuation of a series about the SQL optimization process in the Batch Optimizer and the Tuning Lab modules of Quest SQL Optimizer for Oracle. It covers how to generate more SQL alternatives.
When you optimize a simple SQL statement,...
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, October 24, 2008 4:53 AM
|
By e0aba78c-c04c-4ee1-a696-90b499bc5cc8 on
Friday, October 10, 2008 5:48 AM
Written by Rene Woody
This blog is the beginning of a series that will cover the optimization process in the Batch Optimizer and the Tuning Lab modules of Quest SQL Optimizer for Oracle.
When writing a SQL statement, it is easy to be satisfied when you have figured out how to get the correct results. This is especially true when you are writing a complicated...
|