ibm global services ibm db2 information management technical conference sept. 20-24, 2004 las vegas,...

22
IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB Best Practices

Upload: maryam-german

Post on 29-Mar-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

IBM GLOBAL SERVICES

IBM DB2 Information Management

Technical ConferenceSept. 20-24, 2004

Las Vegas, NV

© IBM Corporation 2004

D17

Dwaine R Snow

DB2 UDB Best Practices

Page 2: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Introduction

• Discuss best practices for – Building your databases– Configuring DB2 and your databases– Monitoring– Tuning

• Based on experience with customers

Page 3: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Building Databases• Ensure enough physical disks

– Too few disks in the #1 cause of poor performance– General ROT, minimum 6-10 disks per CPU

• More is good

– Do not isolate table spaces to disks unless you have plenty of disks

• Normally better to spread table spaces across all available disks

• Do not create more than one TEMP table space per page size

• SMS is normally the best choice for TEMP

Page 4: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Building Databases

• If using SMS on AIX, use 3 or more containers per table space to prevent i-node contention

• Logging– Ensure logs are placed on separate disks

– Use mirror logging • Removes logging as a single point of failure

– When using mirror logging, ensure the logs are on different disks, arrays, disk adapters

Page 5: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Building Databases

• For SAN/NAS– Do not count on a large disk cache for

performance– Buffer pool normally absorbs the hits– Size for performance, NOT capacity

Page 6: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Partitioned Databases

• Rules of thumb for RAW data volumes– For Regatta class CPUs 50 - 200 GB per CPU– For Intel/AMD, HP, SUN 25 - 150 GB per CPU

• Rules of thumb for CPU to Partition Ratio– For Regatta 1 or 2 CPUs per partition both work well– For Intel/AMD, HP, SUN 2 CPUs per partition

typically work best

Page 7: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Configuring DB2• Use 64 bit if you can

– Allows more addressability• Bigger buffer pools

• Bigger sorts

– Less limitations for dynamic tuning

Page 8: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Configuring DB2• Disable intra-partition parallelism using

INTRA_PARALLEL– Leaving this enabled and setting MAX_DEGREE to 1 is worst

possible configuration

• Connection Concentrator should be used for workloads with: – Many connections– Issuing very quick SQL statements– Do not use connection concentrator for large / long running

queries

• Set the CPUSPEED to –1 so DB2 can calculate the appropriate value

Page 9: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Configuring DB2• Set DIAGLEVEL and NOTIFYLEVEL to 3• For large result sets set RQRIOBLK as big as

possible (64K)– Default OK for single row results

• Set SHEAPTHRES based on the average # of concurrently executing apps times the SORTHEAP– But not less than 10X SORTHEAP

• Make sure there are few people in the SYSADM group– Too many can lead to problems

Page 10: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Configuring your databases• Other than size, a single large buffer pool requires no

tuning and gives very good performance• Multiple buffer pools

– Can give better performance if sized correctly– Require constant monitoring

• Configure enough primary logs to handle workload– Creating secondary logs is expensive

• Setting LOGPRIMARY to -1 enables infinite logging– Do you really need/want this?– If using this, set MAX_LOG to limit recovery timeframe

Page 11: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Configuring your databases• Set NUM_IOCLEANERS based on # of CPUs• Set NUM_IOSERVERS based on # of physical disk

the database is using• Set DFT_EXTENT_SZ based on underlying disks

– Be aware of striping, SAN disk configuration

• Set DFT_PREFETCH_SZ based on underlying disks

• Set BLK_LOG_DSK_FUL so that DB2 waits if the log disk becomes full

Page 12: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Configuring your databases

• Type II indexes can improve concurrency– For databases migrated from V7, use reorg to

convert the indexes

• If you encounter an “Out of DBHEAP’ error– Double DBHEAP and continue– Since DB2 only allocates what is needed, no

need to spend a lot of time calculating exact value

Page 13: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Configuring your OLTP databases• For dynamic workloads define a large package cache• For dynamic workloads use query optimization 2 or 3

• Set the log buffer to at least 256 pages• Larger log file size improves performance

– But can impact recovery

• Set MAXLOCKS to 20-30%– UNIX default is too low– Also increase LOCKLIST from default

Page 14: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Configuring your OLTP databases

• Set MINCOMMIT to 1?– Maybe set to # trans per second / 10 (or # trans / 100)

• Set AVG_APPLS low, typically 1 is good– Not based on the # of connections

• Reduce CHNGPGS_THRES to 20-30 %– Default can cause system slowdowns

• Set SOFTMAX to an integer multiple of 100%• Do not set SORTHEAP too large as it makes sorts

more “attractive” to the optimizer• Use smaller page sizes

Page 15: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Configuring your DSS databases

• Use query optimization of 5 or higher – Required for some optimizations, i.e. hash joins

• Ensure AVG_APPLS is set based on real workload– Monitor the system and determine the average # of

concurrently executing applications– Not based on # of connections

• Large SORTHEAP can help to reduce overflowed sorts

• Since normally read only, increase DLCHKTIME• Use larger page sizes

Page 16: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Configuring your ODS

• Use QP to ensure query response times

• Run report is UR isolation level

• Use MQTs to improve report performance, separate access from updates

Page 17: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Monitoring

• Make sure you take DB2 and OS snapshots at the same time

• Only take the snapshot(s) you are interested in– Snapshot for all can add overhead

• SQL functions for snapshots allow you to easily insert the data into table(s) for analysis using SQL– Can analyze data for trends

– Predict and plan for growth

Page 18: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Things to Look for in Snapshots

• High number of sort overflows indicate larger SORTHEAP may help performance

• Examine ratio of rows read to rows selected– High ratio indicates likely table scans

• Rows written/inserted for a query only workload indicates sorts

• Application snapshots are for the length of the connection, not individual statements – To examine statements look at statement snapshot

Page 19: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Tuning

• Use AUTOCONFIGURE to get an initial configuration

• When tuning, change one parameter at a time, and re-test

• Make sure your statistics are current• If you add an index, make sure you run RUNSTATS• Before retesting a poorly performing stmt

– Flush the package cache• Otherwise the old plan will be reused

• When you create an index, the key order does matter– Put column with highest cardinality as the first key

Page 20: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Troubleshooting• When there is a performance problem, use vmstat to

see if the bottleneck is CPU, I/O or memory• High I/O wait typically indicates overflowed sorts or

table scans– Use iostat to isolate the disk, then correlate to the database

object

• High CPU usage may indicate sorting or lock waits are occurring– Examine database snapshots to determine which one is

occurring

• Memory issues usually indicated by paging

Page 21: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Troubleshooting• Statement snapshot (or QP) can help identify

poorly performing queries– Look for queries with high execution times

• Especially if their cost is low

– Look for queries with a number of sorts• More important for queries that are run many times

Page 22: IBM GLOBAL SERVICES IBM DB2 Information Management Technical Conference Sept. 20-24, 2004 Las Vegas, NV © IBM Corporation 2004 D17 Dwaine R Snow DB2 UDB

Summary

• Hopefully these tips can save you time and/headaches

• Make sure you examine the tips and think about how they relate to your environment

• When making config changes, make one change at a time and re-test