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 14

Written by: Bert
Thursday, May 14, 2009 5:56 AM  RssIcon

The title says it all – there is no such thing. This is the second benchmarking myth or “urban legend” that needs exposed. However this is the most prevalent frustration or exasperation that people attempting database benchmarks experience – and experience the hard way (i.e. their efforts majorly or totally fail to meet their initial expectations).
 
There are many reasons for this benchmarking failure – first and foremost is that people fail to allocate proper time for benchmarking. You cannot expect to complete the task in two weeks if you’re new to benchmarking, over-rely on tools to do all the “heavy lifting”, and when it might take days to even weeks to load the required workload test data.

It’s this second issue – over reliance on tools to do it all – that sinks most benchmarking efforts. Tools are a great thing. As I sit here typing in Microsoft Word, this task is much easier than in the past using manual type-writers. But I still have to think of the content. Yes MS Word offers a spell checker, but it can miss an obvious mistake such as “The dog eight my homework.” So MS Word makes the task easier – but the bulk of the work still falls on the writer’s shoulders. And to reiterate last week’s myth using this example, I do not ask MS Word for the document properties and then focus on word count (i.e. TPS) to measure a document’s success. It’s how it reads that matters

Benchmarking and benchmarking tools work exactly the same way. Let’s examine what steps a successful database benchmark effort must perform – and must perform entirely and correctly in order to potentially meet expected results:

  1. Configure and optimize the server hardware
  2. Install and optimize the server operating system
  3. Install and optimize the server RDBMS (e.g. Oracle, SQL Server, etc)
  4. Create and optimize the “TEST” database
  5. Create database user/schema for benchmark objects (e.g. tables, indexes, etc)
  6. Create optimized benchmark database objects for desired benchmark scale
  7. Load the benchmark database objects to their initial or pre-workload state
  8. Run the benchmark workload as per the spec that defines transaction nature
  9. Monitor database performance under workload, diagnose and then optimize
  10. Repeat steps 6, 7, 8 and 9 until satisfied (i.e. results approximate expectations)
There are probably more steps, but I tried to keep it very simple. Plus the math is easy for ten steps. You should ONLY rely on database benchmarking tools for Step 8 – “running” the workload as per spec. That means that pre-execution and post-execution steps are for you to decide and optimize.
 
Many people eventually “get” the fact that benchmarking tools cannot monitor and then optimize their database. So they’ll eventually utilize tools like Quest Software’s Spotlight for Oracle and Spotlight for RAC to address this need. And while they’re not happy, they begrudgingly accept the fact that running a workload does not also mean optimizing it.
 
But most people just seem to feel that the benchmarking tool should automatically create fully optimized database objects to contain the data the workload operates upon. On first thought that seems fairly reasonable. But after a little reflection, how can a benchmarking tool “magically” know how many “spindles” that you have and how they are allocated or grouped. In other words, how can a benchmarking tool “guess” as how to partition your database objects? Benchmarking tools can simply issue stock and/or generic “CREATE” commands. The DBA must manually optimize all benchmarking database objects based upon their particular hardware configuration.
 
So in Benchmark Factory terms, I always run a benchmark in two steps (i.e. two separate BMF projects). Step one simply creates stock or generic database objects which are to be loaded and then used to load optimized database objects upon which the actual workload is performed. You can consider these initial database objects and their data as a “staging” area. Yes – that require extra storage, but disk space is cheap and your time is not.
 
The second step is a BMF project that does the following:
  1. Drop the BMF user/schema (not the staging area!!!)
  2. Create the BMF user/schema
  3. Create and load the optimized database objects
    1. Copy all the data from staging to BMF schema/user
    2. Uses CREATE AS SELECT – very efficient and fast
    3. Uses hints for APPEND and PARALLEL – even faster
  4. Collect database statistics for data dictionary and BMF schema
  5. Take a database performance metric snapshot (e.g. STATS PACK)
  6. Perform the standard workload
  7. Take a database performance metric snapshot (e.g. STATS PACK)
So that’s how I recommend successfully handling steps 6 and 7 for creating and loading database objects that make effective and efficient usage of your disk storage subsystem, which should lead to generally achieving or exceeding your benchmarking performance expectations. Failure to work this way will almost always lead to quite unhappy results.

Search Blog Entries