DB2 - Problem description
Problem IT31704 | Status: Closed |
MON_GET_TABLE/MON_GET_INDEX table functions might respond slowerwhen executed concurrently on databases with many tables | |
product: | |
DB2 FOR LUW / DB2FORLUW / B10 - DB2 | |
Problem description: | |
Performance of MON_GET_TABLE/MON_GET_INDEX table functions will be affected if those are executed concurrently against databases with high number (tens of thousands or more) of table control blocks (TCBs) loaded into memory and run with non-NULL tabschema or tabname arguments. Loaded TCBs can be listed by: $ db2pd -db -tcbstats or counted with: $ db2 "select count(*) from table(mon_get_table('','',-1))" During concurrent execution response time will degrade due to a contention on heap memory allocation by malloc function. A backtrace on threads of Db2 engine (db2sysc) obtained with $ db2pd -stack all or a debugger (gstack/procstack) will show threads with ossStrCompWithPads near the top of the stack, e.g. ... free_common _ossMemFree ossStrCompWithPads sqlrwFilteredTableIterator::execute ... monGetTable ... or: ... malloc_common _ossMemAlloc ossStrCompWithPads sqlrwFilteredTableIterator::execute ... monGetIndex ... | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * all * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to 11.5m4fp0 or higher * **************************************************************** | |
Local Fix: | |
Database deactivation and activation will remove TCBs from memory which temporarily should improve the response time of those functions. On AIX platform performance can be also improved by switching to the multiheap malloc implementation, which requires 1. Adding extra environmental variables to Db2 profile, sqllib/userprofile (persistent during across instance upgrades) or sqllib/db2profile (which will be replaced by default during db2iupdt) export MALLOCOPTIONS=buckets,multiheap:4 export MALLOCBUCKETS=number_of_buckets:128,bucket_sizing_factor:64,bloc ks_per_bucket:1024 2. Setting appending those two options to DB2ENVLIST db2set DB2ENVLIST="MALLOCOPTIONS MALLOCBUCKETS" 3. Restarting the instance for settings to be picked up by Db2 engine. | |
Solution | |
Workaround | |
not known / see Local fix | |
BUG-Tracking | |
forerunner : follow-up : IT31795 | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 30.01.2020 30.06.2020 30.06.2020 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) |