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 29

Written by: Richard To
Friday, May 29, 2009 3:13 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 eliminating the effect of network traffic when you are comparing SQL run times. The previous two blogs discuss how to minimize the effect of caching and how to minimize the affect of other activities on the CPU.

Eliminating the Effect of Network Traffic

When comparing the run times of two SQL statements, you want to know which SQL statement is going to execute best in your environment.

Although network traffic certainly may affect the performance of a SELECT SQL statement, when you are optimizing a SQL statement through rewriting the SQL syntax and adding optimization hints, your goal is eliminate any factors that would skew the comparison of the run times of the SQL statements.

No matter which SQL statement alternative you choose when tuning a SQL statement, you will still have the same amount of data to pass over the network. And if the network is slow for one SQL statement and faster for another, including the data transfer time in the comparison time could skew the comparison of the run times of the SQL alternatives against the original SQL statement.

In Quest SQL Optimizer, you have the choice to execute the SQL statements on the database server only, which does not return the data to the client. Or, you can select to execute it so that when a SELECT SQL statement is executed, the data is returned to the client but it is not displayed.

Run on server

The Run on server option found under the Tuning Lab | Execution | Execution Method calculates the run time of a SQL statement from the server’s clock time when the SQL statement starts to execute on the CPU to the time it finishes without sending the data to the client computer. Executing the SQL statements under this option tells you how long it takes to execute on the database server’s CPU. This is the option selected by default.

Note: For Oracle, your logon account must have privileges to execute the SYS.DBMS_SQL package to retrieve the run time from the server.

Run on client

The Run on client option executes the SQL statement and returns the data to the client. Executing the SQL statement under this option provides you with the run time that includes the time it takes to transfer the data to the client computer.

With this option you can limit the number of rows that are retrieved using the Limit rows retrieved to option. The default number of rows that are returned using this option is 100. If you enable this option, it is important to note that this is not comparing the way the SQL statement will actually be executed in the application since you are not retrieving all of the data. It is only good for online queries that browse the first few pages of data. The execution results may be different when you retrieve all the rows.

You can also specify the number of rows that will be retrieved at one time when fetching the data from the server using the Number of rows returned in a single network transfer option.

Result Comparison

When SELECT SQL statements are executed, a comparison of the results is done to further illustrate that the result set for an alternative SQL statement is the same as the original SQL statement. When you select the Run on server option, the comparison made between the original SQL statement and the SQL alternative is the number of rows returned. No comparison of the result data is performed.

When SELECT SQL statements are executed using the Run on client option, the comparison is done between the hash values of the data. To compare the result sets of the original and alternative SQL statements, each row of the result sets is hashed and then the hash values are stored in the memory of the client compute. The values from the result set of the original SQL statement are compared to the values from each SQL alternative to illustrate that the result sets are the same. The data is not stored in memory nor is it stored on the disk drive of the client computer. 

For some SQL statements without an ORDER clause specification, the alternative SQL statement’s execution plan may not retrieve the records in the same order as the original SQL statement. The Run on client option tells you when the order is different in the Result Comparison column of the Scenario Explorer window.

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

Search Blog Entries