Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
lexoos Участник - экстремал
Вступление в Клуб: 06.11.2007
|
Пт Июн 01, 2012 12:39  Долгие запросы к bc_map_doc |
|
Полезность: Нет оценки
|
Поделитесь, кто как бореться с тяжестью запросов к табличке bc_map_doc, например при оплате картотеки? |
|
 |
Serj Профи
Вступление в Клуб: 02.08.2007
|
Вс Июн 03, 2012 08:36   |
|
Полезность: Нет оценки
|
Покажи трассу запроса + план с предикатами - select * from table(dbms_xplan.display('plan_table', null, ' advanced ',null)), что то у себя особых проблем не наблюдал с табличкой, вдруг они есть а я и не знаю..... |
|
 |
lexoos Участник - экстремал
Вступление в Клуб: 06.11.2007
|
Пн Июн 04, 2012 06:38   |
|
Полезность: Нет оценки
|
PLAN_TABLE_OUTPUT
Plan hash value: 1547189693
----------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 66 | 30963 (1)| 00:06:12 |
| 1 | NESTED LOOPS | | | | | |
| 2 | NESTED LOOPS | | 1 | 66 | 30963 (1)| 00:06:12 |
| 3 | NESTED LOOPS | | 1 | 52 | 30962 (1)| 00:06:12 |
|* 4 | TABLE ACCESS FULL | Z#BC_DOC_TYPES | 8 | 176 | 8 (0)| 00:00:01 |
|* 5 | TABLE ACCESS BY INDEX ROWID| Z#BC_MAP_DOC | 1 | 30 | 3869 (1)| 00:00:47 |
|* 6 | INDEX RANGE SCAN | Z#IX_Z#BC_MAP_DOC_REF13 | 757K| | 2 (50)| 00:00:01 |
|* 7 | INDEX UNIQUE SCAN | Z#IX_Z#BANK_CLIENT_COL9 | 1 | | 1 (0)| 00:00:01 |
| 8 | TABLE ACCESS BY INDEX ROWID | Z#BANK_CLIENT | 1 | 14 | 1 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$1
4 - SEL$1 / A2@SEL$1
5 - SEL$1 / A1@SEL$1
6 - SEL$1 / A1@SEL$1
7 - SEL$1 / B1@SEL$1
8 - SEL$1 / B1@SEL$1
Outline Data
-------------
/*+
BEGIN_OUTLINE_DATA
NLJ_BATCHING(@"SEL$1" "B1"@"SEL$1")
USE_NL(@"SEL$1" "B1"@"SEL$1")
USE_NL(@"SEL$1" "A1"@"SEL$1")
LEADING(@"SEL$1" "A2"@"SEL$1" "A1"@"SEL$1" "B1"@"SEL$1")
INDEX(@"SEL$1" "B1"@"SEL$1" ("Z#BANK_CLIENT"."C_DOCS"))
INDEX_RS_ASC(@"SEL$1" "A1"@"SEL$1" ("Z#BC_MAP_DOC"."C_BCD_TYPE"))
FULL(@"SEL$1" "A2"@"SEL$1")
OUTLINE_LEAF(@"SEL$1")
ALL_ROWS
OPT_PARAM('optimizer_index_caching' 20)
OPT_PARAM('optimizer_index_cost_adj'
DB_VERSION('11.2.0.3')
OPTIMIZER_FEATURES_ENABLE('11.2.0.3')
IGNORE_OPTIM_EMBEDDED_HINTS
END_OUTLINE_DATA
*/
Predicate Information (identified by operation id):
---------------------------------------------------
4 - filter("A2"."C_CLASS_ID"='BCD_CUR_ORDER' OR "A2"."C_CLASS_ID"='BCD_PAYMENT')
5 - filter(TO_NUMBER("A1"."C_OBJ_REF")=230879009)
6 - access("A1"."C_BCD_TYPE"="A2"."ID")
7 - access("B1"."C_DOCS"="A1"."COLLECTION_ID")
Column Projection Information (identified by operation id):
-----------------------------------------------------------
1 - (#keys=0) "A1"."ID"[NUMBER,22], "A1"."C_SYS_ID"[VARCHAR2,40], "B1"."ID"[NUMBER,22]
2 - (#keys=0) "A1"."ID"[NUMBER,22], "A1"."C_SYS_ID"[VARCHAR2,40], "B1".ROWID[ROWID,10]
3 - (#keys=0) "A1"."ID"[NUMBER,22], "A1"."COLLECTION_ID"[NUMBER,22],
"A1"."C_SYS_ID"[VARCHAR2,40]
4 - "A2"."ID"[NUMBER,22]
5 - "A1"."ID"[NUMBER,22], "A1"."COLLECTION_ID"[NUMBER,22], "A1"."C_SYS_ID"[VARCHAR2,40]
6 - "A1".ROWID[ROWID,10]
7 - "B1".ROWID[ROWID,10]
8 - "B1"."ID"[NUMBER,22] |
|
 |
lexoos Участник - экстремал
Вступление в Клуб: 06.11.2007
|
Пн Июн 04, 2012 06:40   |
|
Полезность: Нет оценки
|
запрос
select a1.ID C_MAP_REF, a1.C_SYS_ID C_SYS_ID, b1.ID C_AGR_REF
from Z#BANK_CLIENT b1, Z#BC_DOC_TYPES a2, Z#BC_MAP_DOC a1
where a1.C_BCD_TYPE=a2.id
and (b1.C_DOCS = a1.COLLECTION_ID and a1.C_OBJ_REF = 230879009 and a2.C_CLASS_ID in ('BCD_PAYMENT','BCD_CUR_ORDER'));
выполняется более 2 мин, в bc_map_doc 11 с небольшим млн. записей, структура таблицы дистрибутивная |
|
 |
Serj Профи
Вступление в Клуб: 02.08.2007
|
Пн Июн 04, 2012 08:31   |
|
Полезность: Нет оценки
|
Код: |
---------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 175 | 4 (0)| 00:00:01 |
| 1 | NESTED LOOPS | | | | | |
| 2 | NESTED LOOPS | | 1 | 175 | 4 (0)| 00:00:01 |
| 3 | NESTED LOOPS | | 1 | 153 | 3 (0)| 00:00:01 |
| 4 | TABLE ACCESS FULL | Z#BANK_CLIENT | 1 | 26 | 2 (0)| 00:00:01 |
|* 5 | TABLE ACCESS BY INDEX ROWID| Z#BC_MAP_DOC | 1 | 127 | 1 (0)| 00:00:01 |
|* 6 | INDEX RANGE SCAN | Z#IX_Z#BC_MAP_DOC_COLL | 1 | | 1 (0)| 00:00:01 |
|* 7 | INDEX UNIQUE SCAN | PK_Z#BC_DOC_TYPES_ID | 1 | | 1 (0)| 00:00:01 |
|* 8 | TABLE ACCESS BY INDEX ROWID | Z#BC_DOC_TYPES | 1 | 22 | 1 (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------------
| - у меня план другой,
Код: |
Outline Data
-------------
/*+
BEGIN_OUTLINE_DATA
NLJ_BATCHING(@"SEL$1" "A2"@"SEL$1")
USE_NL(@"SEL$1" "A2"@"SEL$1")
USE_NL(@"SEL$1" "A1"@"SEL$1")
LEADING(@"SEL$1" "B1"@"SEL$1" "A1"@"SEL$1" "A2"@"SEL$1")
INDEX(@"SEL$1" "A2"@"SEL$1" ("Z#BC_DOC_TYPES"."ID"))
INDEX_RS_ASC(@"SEL$1" "A1"@"SEL$1" ("Z#BC_MAP_DOC"."COLLECTION_ID"))
FULL(@"SEL$1" "B1"@"SEL$1")
OUTLINE_LEAF(@"SEL$1")
ALL_ROWS
OPT_PARAM('optimizer_index_cost_adj' 4)
OPT_PARAM('_optimizer_use_feedback' 'false')
OPT_PARAM('_optimizer_extended_cursor_sharing_rel' 'none')
OPT_PARAM('_optim_peek_user_binds' 'false')
DB_VERSION('11.2.0.3')
OPTIMIZER_FEATURES_ENABLE('11.2.0.3')
IGNORE_OPTIM_EMBEDDED_HINTS
END_OUTLINE_DATA
*/
| - попробуй на тесте выставить настройки как у меня в аутлайне, думается optimizer_index_cost_adj=4 полечит запрос, оптимизатор тупит - не нужен ему Z#IX_Z#BC_MAP_DOC_REF13 (С_BCD_TYPE), проще все вытащить через Z#IX_Z#BC_MAP_DOC_COLL(COLLECTION_ID) |
|
 |
lexoos Участник - экстремал
Вступление в Клуб: 06.11.2007
|
Пн Июн 04, 2012 08:52   |
|
Полезность: Нет оценки
|
Попробую, НО запрос вида
select * from Z#BC_MAP_DOC where c_OBJ_REF=230879009
сейчас выполняется 36 сек |
|
 |
Serj Профи
Вступление в Клуб: 02.08.2007
|
Пн Июн 04, 2012 08:58   |
|
Полезность: Нет оценки
|
А план какой у такого чудного времени выполнения? - там же есть idx_z#bc_map_doc_obj - 0.00001 секунда выполняться должон.... |
|
 |
lexoos Участник - экстремал
Вступление в Клуб: 06.11.2007
|
Пн Июн 04, 2012 09:00   |
|
Полезность: Нет оценки
|
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 102 | 41091 (2)| 00:08:14 |
|* 1 | TABLE ACCESS FULL| Z#BC_MAP_DOC | 1 | 102 | 41091 (2)| 00:08:14 |
----------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$1 / Z#BC_MAP_DOC@SEL$1 |
|
 |
Serj Профи
Вступление в Клуб: 02.08.2007
|
Пн Июн 04, 2012 09:03   |
|
Полезность: Нет оценки
|
Код: |
select index_name from all_indexes where table_name='Z#BC_MAP_DOC';
INDEX_NAME
------------------------------
PK_Z#BC_MAP_DOC_ID
IDX_Z#BC_MAP_DOC_SYS_ID
IDX_Z#BC_MAP_DOC_BCD
IDX_Z#BC_MAP_DOC_MOD
IDX_Z#BC_MAP_DOC_OBJ
Z#IX_Z#BC_MAP_DOC_COLL
Z#IX_Z#BC_MAP_DOC_REF13
IDX_Z#BC_MAP_DOC_GATE_ID
| -что у вас показывает показывает верхний селект? |
|
 |
Serj Профи
Вступление в Клуб: 02.08.2007
|
Пн Июн 04, 2012 09:15   |
|
Полезность: Нет оценки
|
Код: | select index_name,column_name from all_ind_columns where table_name='Z#BC_MAP_DOC'; INDEX_NAME
------------------------------
COLUMN_NAME
---------------------------------------------------------------
PK_Z#BC_MAP_DOC_ID
ID
IDX_Z#BC_MAP_DOC_BCD
C_BCD_REF
IDX_Z#BC_MAP_DOC_MOD
SYS_NC00019$
INDEX_NAME
------------------------------
COLUMN_NAME
---------------------------------------------------------------
IDX_Z#BC_MAP_DOC_OBJ
C_OBJ_REF
Z#IX_Z#BC_MAP_DOC_COLL
COLLECTION_ID
Z#IX_Z#BC_MAP_DOC_REF13
C_BCD_TYPE
INDEX_NAME
------------------------------
COLUMN_NAME
---------------------------------------------------------------
IDX_Z#BC_MAP_DOC_GATE_ID
SYS_NC00016$
IDX_Z#BC_MAP_DOC_SYS_ID
C_SYS_ID
8 ñòðîê âûáðàíî. | вот так у нас |
|
 |
lexoos Участник - экстремал
Вступление в Клуб: 06.11.2007
|
Пн Июн 04, 2012 10:21   |
|
Полезность: Нет оценки
|
Serj пишет: | вот так у нас |
абсолютно также |
|
 |
Serj Профи
Вступление в Клуб: 02.08.2007
|
Пн Июн 04, 2012 11:00   |
|
Полезность: Нет оценки
|
lexoos пишет: | Serj пишет: | вот так у нас |
абсолютно также | - понятно, значит так , сильно рекомендую на тесте сделать
Код: |
_optimizer_use_feedback' 'false'
_optimizer_extended_cursor_sharing_rel' 'none'
_optim_peek_user_binds' 'false'
| почистить shared_pool и потестить запрос еще раз |
|
 |
lexoos Участник - экстремал
Вступление в Клуб: 06.11.2007
|
Пн Июн 04, 2012 11:20   |
|
Полезность: Нет оценки
|
где устанавливаются данные параметры? у нас таких нет |
|
 |
Serj Профи
Вступление в Клуб: 02.08.2007
|
Пн Июн 04, 2012 11:34   |
|
Полезность: Нет оценки
|
Например так под пользователем у которого есть право alter system
Код: |
alter system set "_optimizer_use_feedback"=FALSE;
alter system set "_optimizer_extended_cursor_sharing_rel"=NONE;
alter system set "_optim_peek_user_binds"=FALSE;
alter system flush shared_pool;
| - на постоянку прописываются в инит файле БД, возможно прописать на постоянку в Админе пользователей в профиле - но тогда это не будет влиять на runtime отчеты. |
|
 |
lexoos Участник - экстремал
Вступление в Клуб: 06.11.2007
|
Пн Июн 04, 2012 14:06   |
|
Полезность: Нет оценки
|
у нас оракл10 вреиси на тестах, недостающие параметры таким образом не дает создать |
|
 |
|