CftClub.ru
Клуб специалистов ЦФТ-Банк

Долгие запросы к bc_map_doc
На страницу 1, 2, 3, 4  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Oracle DBA
Предыдущая тема :: Следующая тема  
Автор Сообщение
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' Cool
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 вреиси на тестах, недостающие параметры таким образом не дает создать
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Oracle DBA Часовой пояс: GMT + 3
На страницу 1, 2, 3, 4  След.
Страница 1 из 4

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru