Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Очень низкая производительность базы
|
|||
|---|---|---|---|
|
#18+
Привет, имеется база db2 v9.5 на ubuntu. Наблюдаются очень большие тормоза на вставках. Очень хорошо видно на выборке - простой запрос select count(*) на таблицу с 13 млн записей выполняется более 14-ти минут. С чего начать смотреть проблему? Конфиг вот такой Database configuration release level = 0x0c00 Database release level = 0x0c00 Database territory = US Database code page = 1208 Database code set = UTF-8 Database country/region code = 1 Database collating sequence = IDENTITY Alternate collating sequence (ALT_COLLATE) = Number compatibility = OFF Varchar2 compatibility = OFF Database page size = 4096 Dynamic SQL Query management (DYN_QUERY_MGMT) = DISABLE Discovery support for this database (DISCOVER_DB) = ENABLE Restrict access = NO Default query optimization class (DFT_QUERYOPT) = 5 Degree of parallelism (DFT_DEGREE) = 1 Continue upon arithmetic exceptions (DFT_SQLMATHWARN) = NO Default refresh age (DFT_REFRESH_AGE) = 0 Default maintained table types for opt (DFT_MTTB_TYPES) = SYSTEM Number of frequent values retained (NUM_FREQVALUES) = 10 Number of quantiles retained (NUM_QUANTILES) = 20 Decimal floating point rounding mode (DECFLT_ROUNDING) = ROUND_HALF_EVEN Backup pending = NO Database is consistent = YES Rollforward pending = NO Restore pending = NO Multi-page file allocation enabled = YES Log retain for recovery status = NO User exit for logging status = NO Self tuning memory (SELF_TUNING_MEM) = ON Size of database shared memory (4KB) (DATABASE_MEMORY) = AUTOMATIC Database memory threshold (DB_MEM_THRESH) = 10 Max storage for lock list (4KB) (LOCKLIST) = AUTOMATIC Percent. of lock lists per application (MAXLOCKS) = AUTOMATIC Package cache size (4KB) (PCKCACHESZ) = AUTOMATIC Sort heap thres for shared sorts (4KB) (SHEAPTHRES_SHR) = AUTOMATIC Sort list heap (4KB) (SORTHEAP) = AUTOMATIC Database heap (4KB) (DBHEAP) = AUTOMATIC Catalog cache size (4KB) (CATALOGCACHE_SZ) = 260 Log buffer size (4KB) (LOGBUFSZ) = 98 Utilities heap size (4KB) (UTIL_HEAP_SZ) = 5000 Buffer pool size (pages) (BUFFPAGE) = 1000 SQL statement heap (4KB) (STMTHEAP) = AUTOMATIC Default application heap (4KB) (APPLHEAPSZ) = AUTOMATIC Application Memory Size (4KB) (APPL_MEMORY) = AUTOMATIC Statistics heap size (4KB) (STAT_HEAP_SZ) = AUTOMATIC Interval for checking deadlock (ms) (DLCHKTIME) = 10000 Lock timeout (sec) (LOCKTIMEOUT) = -1 Changed pages threshold (CHNGPGS_THRESH) = 80 Number of asynchronous page cleaners (NUM_IOCLEANERS) = AUTOMATIC Number of I/O servers (NUM_IOSERVERS) = AUTOMATIC Index sort flag (INDEXSORT) = YES Sequential detect flag (SEQDETECT) = YES Default prefetch size (pages) (DFT_PREFETCH_SZ) = AUTOMATIC Track modified pages (TRACKMOD) = OFF Default number of containers = 1 Default tablespace extentsize (pages) (DFT_EXTENT_SZ) = 32 Max number of active applications (MAXAPPLS) = AUTOMATIC Average number of active applications (AVG_APPLS) = AUTOMATIC Max DB files open per application (MAXFILOP) = 61440 Log file size (4KB) (LOGFILSIZ) = 25000 Number of primary log files (LOGPRIMARY) = 13 Number of secondary log files (LOGSECOND) = 4 Changed path to log files (NEWLOGPATH) = Path to log files = /localhome/db2inst1/db2inst1/NODE0000/SQL00006/SQLOGDIR/ Overflow log path (OVERFLOWLOGPATH) = Mirror log path (MIRRORLOGPATH) = First active log file = Block log on disk full (BLK_LOG_DSK_FUL) = NO Percent max primary log space by transaction (MAX_LOG) = 0 Num. of active log files for 1 active UOW(NUM_LOG_SPAN) = 0 Group commit count (MINCOMMIT) = 1 Percent log file reclaimed before soft chckpt (SOFTMAX) = 520 Log retain for recovery enabled (LOGRETAIN) = OFF User exit for logging enabled (USEREXIT) = OFF HADR database role = STANDARD HADR local host name (HADR_LOCAL_HOST) = HADR local service name (HADR_LOCAL_SVC) = HADR remote host name (HADR_REMOTE_HOST) = HADR remote service name (HADR_REMOTE_SVC) = HADR instance name of remote server (HADR_REMOTE_INST) = HADR timeout value (HADR_TIMEOUT) = 120 HADR log write synchronization mode (HADR_SYNCMODE) = NEARSYNC HADR peer window duration (seconds) (HADR_PEER_WINDOW) = 0 First log archive method (LOGARCHMETH1) = OFF Options for logarchmeth1 (LOGARCHOPT1) = Second log archive method (LOGARCHMETH2) = OFF Options for logarchmeth2 (LOGARCHOPT2) = Failover log archive path (FAILARCHPATH) = Number of log archive retries on error (NUMARCHRETRY) = 5 Log archive retry Delay (secs) (ARCHRETRYDELAY) = 20 Vendor options (VENDOROPT) = Auto restart enabled (AUTORESTART) = ON Index re-creation time and redo index build (INDEXREC) = SYSTEM (RESTART) Log pages during index build (LOGINDEXBUILD) = OFF Default number of loadrec sessions (DFT_LOADREC_SES) = 1 Number of database backups to retain (NUM_DB_BACKUPS) = 12 Recovery history retention (days) (REC_HIS_RETENTN) = 366 Auto deletion of recovery objects (AUTO_DEL_REC_OBJ) = OFF TSM management class (TSM_MGMTCLASS) = TSM node name (TSM_NODENAME) = TSM owner (TSM_OWNER) = TSM password (TSM_PASSWORD) = Automatic maintenance (AUTO_MAINT) = ON Automatic database backup (AUTO_DB_BACKUP) = OFF Automatic table maintenance (AUTO_TBL_MAINT) = ON Automatic runstats (AUTO_RUNSTATS) = ON Automatic statement statistics (AUTO_STMT_STATS) = OFF Automatic statistics profiling (AUTO_STATS_PROF) = OFF Automatic profile updates (AUTO_PROF_UPD) = OFF Automatic reorganization (AUTO_REORG) = OFF Enable XML Character operations (ENABLE_XMLCHAR) = YES WLM Collection Interval (minutes) (WLM_COLLECT_INT) = 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 09:25 |
|
||
|
Очень низкая производительность базы
|
|||
|---|---|---|---|
|
#18+
Проблема может быть как в ОС (работают другие приложения, мало памяти, медленные диски) так и в db2. Если смотреть на db2 то возможно у вас выделено мало памяти под буферный пул, и происходят частые чтения с диска. Покажите вывод команды db2 get snapshot for database on warehous|grep -i buff ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 09:41 |
|
||
|
Очень низкая производительность базы
|
|||
|---|---|---|---|
|
#18+
точнее db2 get snapshot for database on имя_вашей_базы|grep -i buff ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 09:41 |
|
||
|
Очень низкая производительность базы
|
|||
|---|---|---|---|
|
#18+
Buffer pool data logical reads = Not Collected Buffer pool data physical reads = Not Collected Buffer pool temporary data logical reads = Not Collected Buffer pool temporary data physical reads = Not Collected Buffer pool data writes = Not Collected Buffer pool index logical reads = Not Collected Buffer pool index physical reads = Not Collected Buffer pool temporary index logical reads = Not Collected Buffer pool temporary index physical reads = Not Collected Buffer pool index writes = Not Collected Buffer pool xda logical reads = Not Collected Buffer pool xda physical reads = Not Collected Buffer pool temporary xda logical reads = Not Collected Buffer pool temporary xda physical reads = Not Collected Buffer pool xda writes = Not Collected Total buffer pool read time (milliseconds) = Not Collected Total buffer pool write time (milliseconds)= Not Collected No victim buffers available = Not Collected Number log buffer full = 0 Log data found in buffer = 0 Memory Pool Type = Buffer Pool Heap Memory Pool Type = Buffer Pool Heap Secondary ID = System 32k buffer pool Memory Pool Type = Buffer Pool Heap Secondary ID = System 16k buffer pool Memory Pool Type = Buffer Pool Heap Secondary ID = System 8k buffer pool Memory Pool Type = Buffer Pool Heap Secondary ID = System 4k buffer pool ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 09:44 |
|
||
|
Очень низкая производительность базы
|
|||
|---|---|---|---|
|
#18+
У вас не включен монитор буферных пулов (вместо значений счетчиков пишет Not Collected). Чтобы включить монитор выполните команду db2 UPDATE MONITOR SWITCHES USING BUFFERPOOL ON затем запустите ваш проблемный запрос, и после того как запрос выполнится, покажите вывод команды db2 get snapshot for database on имя_вашей_базы|grep -i buff ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 10:02 |
|
||
|
Очень низкая производительность базы
|
|||
|---|---|---|---|
|
#18+
Запрос просто select count(*) from some_table 1 ----------- 13797000 1 record(s) selected. real 14m28.516s user 0m0.020s sys 0m0.020s db2 get snapshot for database on vr | grep -i buff Buffer pool data logical reads = 617 Buffer pool data physical reads = 187 Buffer pool temporary data logical reads = 0 Buffer pool temporary data physical reads = 0 Buffer pool data writes = 0 Buffer pool index logical reads = 143031 Buffer pool index physical reads = 142736 Buffer pool temporary index logical reads = 0 Buffer pool temporary index physical reads = 0 Buffer pool index writes = 0 Buffer pool xda logical reads = 0 Buffer pool xda physical reads = 0 Buffer pool temporary xda logical reads = 0 Buffer pool temporary xda physical reads = 0 Buffer pool xda writes = 0 Total buffer pool read time (milliseconds) = 866758 Total buffer pool write time (milliseconds)= 0 No victim buffers available = 133310 Number log buffer full = 0 Log data found in buffer = 0 Memory Pool Type = Buffer Pool Heap Memory Pool Type = Buffer Pool Heap Secondary ID = System 32k buffer pool Memory Pool Type = Buffer Pool Heap Secondary ID = System 16k buffer pool Memory Pool Type = Buffer Pool Heap Secondary ID = System 8k buffer pool Memory Pool Type = Buffer Pool Heap Secondary ID = System 4k buffer pool ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 11:01 |
|
||
|
Очень низкая производительность базы
|
|||
|---|---|---|---|
|
#18+
Пожалуй следовало бы с этого начать, дело в том что полный скан по большой таблице, как у вас, никогда не будет быстрым, только если вся таблица целиком не влезет в буферный пул. Размеры буферного пула как правило значительно меньше размеров больших таблиц и всегда будет иметь место прямое чтение с диска. Поэтому замерять производительность базы путем select count(*) from bigtable не имеет особого смысла. Если приложения часто читают из больших таблиц, то для увеличения производительности следует выделить отдельный буферный пул для больших таблиц, и отдельный для остальных. В этом случае остальные таблицы будут кэшироваться значительно лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 11:25 |
|
||
|
Очень низкая производительность базы
|
|||
|---|---|---|---|
|
#18+
Запрос другой, но на этой базе он вообще не отрабатывает за конечное время. Запрос количества строк сделал чтобы оценить обьемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 11:32 |
|
||
|
Очень низкая производительность базы
|
|||
|---|---|---|---|
|
#18+
IntserЗапрос другой, но на этой базе он вообще не отрабатывает за конечное время. Запрос количества строк сделал чтобы оценить обьемы. Ну тогда включайте все монитор-свичи и смотрите на ваш запрос в SYSIBMADM.SNAPDYN_SQL Во время выполнения мониторьте соответстсвующего агента в db2top и поглядывайте на sar и iostat Скорее всего картина прояснится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 11:37 |
|
||
|
|

start [/forum/topic.php?fid=43&fpage=68&tid=1602776]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 40ms |
| total: | 196ms |

| 0 / 0 |
