The access paths formulated by the DB2 optimizer during the
BIND and REBIND processes are critical to your application performance. It is
these access paths that determine not only how DB2 data is accessed by your
program, but how efficiently it is accessed. Whether you are preparing a new
program, implementing changes into your existing DB2 applications, upgrading to
a new version of DB2, or simply trying to achieve optimum performance for
existing applications, an exhaustive and thorough REBIND management policy
should be of paramount importance.
However, many organizations are not doing everything
possible to keep access paths up-to-date with the current state of their data. So
what is the best practice approach for rebinding your DB2 programs? The answer is
“The Five R’s.” This methodology of regular rebinding followed by a review of your
access paths required the following steps:
- Start with an inspection of the RTS (Real Time Statistics) to determine which objects need to be reorganized.
- Follow that up by running a REORG on table spaces and indexes as appropriate based on the statistics.
- After reorganizing, run RUNSTATS (to ensure the DB2 Catalog is up-to-date).
- Follow that with REBINDs of your programs.
- Then we need that fifth R – which is to review the access paths generated by the REBIND.
For shops that have avoided rebinding for years this
approach represents a significant change. So what new DB2 features are available
to help? Well, several releases ago, back in DB2 9 for z/OS, plan stability was added. This feature enables you to save
a backup version of your access paths as a precautionary measure. If any of the
new access paths after rebinding are less efficient, the DBA can switch back to
the backed up access paths. In order to implement this level of stability you
can use the PLANMGMT parameter of the REBIND command. There are three options:
NONE, BASIC, and EXTENDED. BASIC saves the previous access paths, and EXTENDED
saves the previous and an original. You can use REBIND and the SWITCH parameter to revert back
to the saved access paths when the new access paths cause degraded performance.
As of DB2 10 for z/OS you can tell DB2 to try to reused previous access paths for SQL statements whenever possible. This is called access path reuse and is implemented using the APREUSE bind option. When invoked, DB2 uses information about the previous access paths to create a hint.
When BIND PACKAGE or REBIND PACKAGE specifies APREUSE(ERROR), DB2 tries to locate the access path information from a package that has a matching identity. If no such package exists, DB2 tries to locate another recent version of the package that has the matching location, collection ID, and name. The APREUSE option only applies to statements that have identical statement text in both packages. Newly added statements and statements with text changes never reuse previous access paths.
When BIND PACKAGE or REBIND PACKAGE specifies APREUSE(ERROR), DB2 tries to locate the access path information from a package that has a matching identity. If no such package exists, DB2 tries to locate another recent version of the package that has the matching location, collection ID, and name. The APREUSE option only applies to statements that have identical statement text in both packages. Newly added statements and statements with text changes never reuse previous access paths.
Reusing access paths can help to minimize administrative and performance issues involved in rebinding.
Of course, there are products on the market which can be
used to implement a proactive approach to rebinding. These products preview the
new access paths and then run them through a rules system to determine if the
new access will be improved, unchanged, or degraded. With this information we
can rebind everything that would improve and avoid rebinding anything else
until we can analyze the cause of the degradation. Using such an approach you
should not have degraded access paths sneaking into your production
environment.
Summary
At any rate, a systematic approach to DB2 binding and rebinding is necessary to assure optimal performance within your DB2 applications. This short blog entry covers some of the basics and recent changes to DB2 in this area.
Summary
At any rate, a systematic approach to DB2 binding and rebinding is necessary to assure optimal performance within your DB2 applications. This short blog entry covers some of the basics and recent changes to DB2 in this area.
Be sure to take your time and to plan your statistics-gathering and bind/rebind approach... or be ready to be in constant firefighter mode as you address poorly-performing SQL in your applications!
WHAT IS THE BEST AND QUICK WAY TO REBIND ALL COBOL/DB2 BATCH PROGRAMS (USING BATCH JCL ?) ?
ReplyDelete