Minimize
Blogger List

Johannes Ahrends
Toad and Oracle

Ben Boise
Toad SC Discussions

Kevin Dalton
Benchmark Factory

Steven Feuerstein
PL/SQL Obsession

Devin Gallagher
Toad SC discussions

Stuart Hodgins
JProbe Discussions

  Henrik "Mauritz" Johnson
Toad Tips & Tricks on the "other" Toads
  Mark Kurtz
Toad SC discussions
  Michael Lumbard
Toad SC discussions
Daniel Norwood
Toad for Data Analysts,
Toad Extension for Visual Studio
Debbie Peabody
Toad for Data Analysts
Gary Piper
Toad Reports Manager
John Pocknell
Toad for Oracle, JProbe
Kuljit Sangha
Toad SC discussions
Bert Scalzo Indicates Oracle ACE status
Toad for Oracle, Data Modeling, Benchmarking
Jeff Smith
Toad product family
Richard To
SQL Optimization
Jim Wankowski
DB2 - LUW and z/OS
John Weathington
  Toad Data Modeler Opens in a new window
Data Modeling
 
  Real Automated Code Testing for Oracle
Quest Code Tester blog
 
Minimize
Blog Tags
toad for oracle (122)
oracle (62)
plsql (46)
sql optimization (37)
toad for data analysts (28)
code tester (19)
toad for ibm db2 (13)
automation (11)
batch optimizer (10)
virtualization (10)
schema browser (9)
toad for sql server (9)
data grid (8)
sql (8)
sql editor (8)
toad data modeler (8)
benchmark factory (7)
excel (7)
query builder (7)
report manager (7)
toad extension (7)
visual studio (7)
11g (6)
configuration (6)
freeware (6)
health check (6)
vmware (6)
connect (5)
dba module (5)
er diagrammer (5)
F4 (5)
linux (5)
refactoring (5)
spotlight (5)
unicode (5)
compare (4)
debugger (4)
export (4)
formatter (4)
make code (4)
rman (4)
strip code (4)
benchmark (3)
bfscript (3)
bulk collect (3)
code templates (3)
code xpert (3)
database browser (3)
db2 (3)
notebook (3)
oem (3)
RAC (3)
session browser (3)
speed (3)
sql optimizer (3)
toad for mysql (3)
tpc-c (3)
9.7 (2)
alert log (2)
app designer (2)
awr (2)
code insight (2)
code snippets (2)
collection (2)
compare and sync (2)
compliance (2)
data generator (2)
data warehouse (2)
database explorer (2)
database monitor (2)
explain (2)
forall (2)
ftp (2)
group execute (2)
handbook (2)
installation (2)
job scheduler (2)
multi-task (2)
nested table (2)
os command (2)
profiler (2)
recovery (2)
release history (2)
save as (2)
schema compare (2)
sql recall (2)
stats pack (2)
subversion (2)
team coding (2)
trace file browser (2)
while loop (2)
10g (1)
64 bit (1)
7zip (1)
action (1)
addm (1)
alter (1)
ansi join (1)
array (1)
ccleaner (1)
code coverage (1)
code road map (1)
CRON (1)
cursor for loop (1)
data browser (1)
data subset (1)
database probe (1)
dbms_flashback (1)
dbms_profiler (1)
ddl (1)
feuerstein (1)
filezilla (1)
flash drive (1)
flow control (1)
for loop (1)
group policy manager (1)
hints (1)
import (1)
index (1)
inheritance (1)
invoker rights (1)
ipad (1)
java (1)
latency (1)
log switch (1)
logical model (1)
ltrim (1)
master-detail browser (1)
monitor (1)
multi-select (1)
naming standards (1)
network (1)
object explorer (1)
OEBS (1)
package (1)
parser (1)
partitioning (1)
performance (1)
pragma (1)
project manager (1)
RAT (1)
revo (1)
REXEC (1)
schema report (1)
script manager (1)
search (1)
set operator (1)
sga (1)
slow (1)
sonarsource (1)
source control (1)
space projection (1)
sql monitor (1)
sql navigator (1)
sql script (1)
sql tracker (1)
sql*plus (1)
standards (1)
statistics (1)
stored procedure (1)
string parser (1)
sub-model (1)
sub-type (1)
synch (1)
synchback (1)
TELNET (1)
toad (1)
trace (1)
unit test (1)
unix (1)
usb (1)
utility (1)
v10 (1)
v9.5 (1)
version control (1)
waits (1)
workload replay (1)
workspace (1)
xml (1)
 
WELCOME, GUEST
 
 

Blogs
Toad and Database Commentaries

Toad World blogs are a mix of insightful how-tos from Quest experts as well as their commentary on experiences with new database technologies.  Have some views of your own to share?  Post your comments!  Note:  Comments are restricted to registered Toad World users.

Do you have a topic that you'd like discussed?  We'd love to hear from you.  Send us your idea for a blog topic.


Oct 2

Written by: Richard To
Friday, October 02, 2009 3:59 AM  RssIcon

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 going through the Oracle manual without guessing which statistic in Quest SQL Optimizer corresponds to which Oracle statistic.

A little control and help panel in the middle of the screen is designed to help new users to understand what is going on during SQL optimization and what step to take during or after SQL optimization and rewrite.  

 

The new optimization workflow

We made two changes to the workflow of the SQL optimization process that will significantly improve the speed at which you can find the best SQL alternative. In the previous versions, if the user stopped the rewrite process, no SQL alternatives were available. It was an all or nothing process. You were not provided with the alternatives that were created before you stopped the optimization process. We have spent a lot of effort rewriting our engine to allow SQL alternatives (rewrites) to be returned during the rewrite process. So now if you stop the optimization process in the middle of generating the alternatives, you will have some alternatives to review and test.  

Also in the previous versions, the SQL optimization process which rewrites the syntax of the SQL statement must finish before the batch test run can be executed.
 
In version 7.5, we have also added a new function called “Optimize” which allows you to generate alternatives and test run these alternatives at the same time. You can review any of the newly created better SQL alternatives and stop the optimization process any time without waiting for entire process being finished. 
 

The New Batch Run Workflow

In previous versions, the default test run method is designed to test run the original SQL twice for reducing the first data caching time and then test run all alternatives once only  This method plays it safe to give original SQL performance advantage over other SQL alternatives in timing of SQL parsing and new indexes caching. For SQL with a long run time, this method of execution is acceptable, but for SQL statements with a short run time, the overhead for parsing the SQL alternatives may be significant compare to the original SQL statement, so, I recommended test running all SQL statements twice if your original SQL run time is short.

In SQL Optimizer version 7.5, we have automated this method in the Batch Run function and Optimize function for SQL which have a run time less than 5 seconds.  All SQL alternatives now will be executed twice automatically and have a fair comparison with the original SQL. This new execution method is used when you select Run all SQL twice if original SQL run faster than 5 seconds option. We have made this the default setting for the Batch Run.

Some Changes in the Optimization Engine

Since the test run and rewrite functions can now be executed at the same time, the time to discover the first alternative with better performance is significantly reduced. Therefore, the Intelligence Level’s granularity can be enlarged for more drastic control over the searching depth. A higher intelligence level now does not mean you have to wait for a long time to get all SQL alternatives generated before you to test run.  Now it means that you can check more alternative rewrites while you may have some better alternatives executing. You can stop the process any time you feel comfortable with the current findings.

The Intelligence Levels changed from 1-10 to 1-5. The previous level 2 it now 1, 4 is 2, 6 is 3, 8 is 4 and 10 is 5.

Another new feature selects which SQL alternatives to execute first in the Batch Run. I have found that SQL statements with similar plan cost usual have very similar performance. This new function selects one SQL alternative to execute from each group of SQL alternatives whose Oracle plan cost is determined to be within the same cost group. The SQL alternatives that are selected from the plan cost groups are executed before the rest of the SQL alternatives. This is done to see if the best performing SQL can be found more quickly. In the Options settings, the Execution order for SQL option enables you to use this Intelligence order or you can select Plan cost to execute the SQL alternatives in order of the lowest plan cost to the highest cost. By executing one SQL from each group first, you increase the likelihood that you will find a faster alternative quickly.
 
Due to time limitation, there are not many changes in transformation rules, but you will still feel some improvements in Oracle11g, since we have modified some rules to cater to the Oracle 11g SQL optimizer new behavior. You are invited to test the difference. Your feedback is always welcome.
 

Search Blog Entries