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.


May 1

Written by: Richard To
Friday, May 01, 2009 4:56 AM  RssIcon

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. 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. Quest SQL Optimizer provides option settings that allow you to minimize these factors so that you can find the SQL statement that is best for your database environment. This blog discusses minimizing the effect of caching in order to have the most accurate run time comparisons. The next two blogs will discuss how to minimize the effect of other activities on the CPU and network traffic.

When you are testing the SQL statements, the time that is best to compare is how long the SQL statement is going to take to execute on the CPU. So, it is best to try to eliminate other factors that may add time to the execution time when you are comparing the run time of the execution of one SQL statement to another.

The elapsed run time in Quest SQL Optimizer is calculated from the time the SQL statement starts to run on the CPU until the time it finishes.

Caching the Data, Indexes and SQL Statements

Caching the data, the indexes, and the SQL statement can affect the comparison times if one SQL statement does the caching and others do not. The following options are available for retrieving the run time so that you can select the one that provides you with the most accurate comparison of the run times.

Option: Original SQL twice using second run time and all others once

The first time you access data from a table, the data is cached into memory from the disk. This process takes a few moments. The next time you access that data, it is already in memory so accessing the data is faster for the following SQL statements. Therefore, the first SQL statement will have the additional time it takes to cache the data included in the run time whereas the following SQL statements do not have that additional time included in their run times. So, to have a comparable test, the Original SQL twice using second run time and all others once runs the first SQL twice. The time from the first execution is ignored and the time from the second run is compared to the time from the other statements, which are all run once. With this option, all SQL statements are executed with the data cached. This is the option that is selected by default.

Option: All SQL twice using the second run time

For fast running SQL statements, the All SQL twice using the second run time option is a good choice as it executes all SQL statements twice, which enables you to eliminate two additional factors that can affect the accuracy of the comparison run times: caching, parsing, and optimizing the SQL statement and caching the additional indexes used by the SQL statements. If a SQL statement has been recently executed, then the SQL information for that statement is likely to be resident in the cache and the statement should execute a little faster because the SQL statement does not need to be parsed and optimized. Also, if some of the SQL statements use different indexes, one index may be resident in the cache and another may not. The additional time for caching an index will be added to the run time.

This option eliminates time variation caused by additional overheads since it runs all SQL statements twice, so, you get a more accurate comparison of the run time of each alternative SQL statement because you are comparing the actual time it takes to execute on the CPU. This setting is especially suitable for short runtime SQL such as SQL executions of less than 3 seconds.

Option: All SQL once

For long running SQL, the All SQL once option is the best selection because there is no need to run any statement twice since the effect from additional overhead is relatively insignificant compared with the actual SQL execution time.

If you would like to learn more about Quest SQL Optimizer for Oracle, please visit the Inside SQL Optimizer for Oracle community.
 

1 comment(s) so far...


Re: Executing SQL In Tuning Lab – Part 2 – Equal Comparison for Run Times: Minimizing the Effect of Caching

Hi, I am running version 9.1.0.62 but I can't find this preferences page, please assist. Thanks!

By cmooi on   Friday, February 05, 2010 1:29 AM
Search Blog Entries