19.06.2013 Views

DB2 UDB for z/OS Version 8 Performance Topics - IBM Redbooks

DB2 UDB for z/OS Version 8 Performance Topics - IBM Redbooks

DB2 UDB for z/OS Version 8 Performance Topics - IBM Redbooks

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

application that can have great potential benefit is one using a buffer pool with a poor read hit<br />

ratio and lots of I/O. Writes also benefit from page fixing.<br />

We explore this topic in more detail in Chapter 4, “<strong>DB2</strong> subsystem per<strong>for</strong>mance” on<br />

page 127.<br />

There are new functions in <strong>DB2</strong> V8 where we experienced a decrease in CPU cost. We use<br />

two new functions at the SQL level to minimize the CPU impact of migrating to <strong>DB2</strong> V8:<br />

Multi-row insert and multi-row fetch. These new functions require application changes, but<br />

can offset an increase in CPU cost of an insert intensive or fetch intensive application and are<br />

worth exploring <strong>for</strong> those applications that apply. You will find a discussion of multi-row insert<br />

and multi-row fetch in Chapter 3, “SQL per<strong>for</strong>mance” on page 29.<br />

For those applications that were are virtual storage-constrained with V7, there are a number<br />

of areas <strong>for</strong> possible CPU improvements. One is, if you are using data space buffer pools or<br />

hiperpools with V7, once you migrate to <strong>DB2</strong> V8, <strong>DB2</strong> replaces these pools with buffer pools<br />

residing above the 2 GB bar, and fewer instructions are needed <strong>for</strong> their management. If your<br />

system can use real storage <strong>for</strong> bigger buffer pools, I/O can be reduced and this results in<br />

CPU savings, especially <strong>for</strong> those applications using a lot of synchronous I/O <strong>for</strong> critical batch<br />

processes.<br />

If you are using DSNZPARMs MINSTOR and/or CONTSTOR to contract and minimize thread<br />

storage consumption, and thread storage consumption is not the major consumer below the 2<br />

GB DBM1 storage, you can reset them to free up much needed virtual storage <strong>for</strong> other use<br />

and gain back the CPU overhead of running these processes.<br />

You can find more in<strong>for</strong>mation on buffer pools, MINSTOR and CONTSTOR in Chapter 4,<br />

“<strong>DB2</strong> subsystem per<strong>for</strong>mance” on page 127.<br />

Warning: When doing per<strong>for</strong>mance measurements between different releases of <strong>DB2</strong>,<br />

make sure you take a look at the whole picture. An increase in class 2 CPU time may be<br />

offset by a reduction in SRB or TCB time in the <strong>DB2</strong> address spaces. We recommend you<br />

take both sets of numbers into account when doing comparisons since the CPU time may<br />

now be charged to the application owning TCB and less to one of the <strong>DB2</strong> address spaces.<br />

The in<strong>for</strong>mation needed to do a proper analysis would be spread across accounting and<br />

statistics reports.<br />

2.3 DBM1 virtual storage mapping<br />

The limitation of virtual storage in the DBM1 address space prior to V8 is a serious problem<br />

and one of the primary reasons customers cite as their motivation <strong>for</strong> moving to <strong>DB2</strong> V8.<br />

Virtual storage is not something you can buy; it is inherent in the software product’s<br />

architecture. Prior to <strong>DB2</strong> V8, the amount of virtual storage available is limited by the 31-bit<br />

addressing scheme which equates to an address space capable of addressing limited to 2<br />

GB.<br />

If you have been virtual storage-constrained, you have most likely done one or more of the<br />

following to get some storage relief:<br />

► Moved your virtual pools to data spaces<br />

► Used the data space extension of the EDM pool <strong>for</strong> the (global) dynamic statement cache<br />

► Used DSNZPARMs CONTSTOR and MINSTOR if using long running threads to minimize<br />

thread-related storage<br />

16 <strong>DB2</strong> <strong>UDB</strong> <strong>for</strong> z/<strong>OS</strong> <strong>Version</strong> 8 Per<strong>for</strong>mance <strong>Topics</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!