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

Долгие запросы к bc_map_doc
На страницу Пред.  1, 2, 3, 4  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Oracle DBA
Предыдущая тема :: Следующая тема  
Автор Сообщение
Serj
Профи


Вступление в Клуб: 02.08.2007
СообщениеВт Июн 05, 2012 05:30    Ответить с цитатой
Полезность: Нет оценки
lexoos пишет:
у нас оракл10 вреиси на тестах, недостающие параметры таким образом не дает создать
- минутку, на боевой базе и на тесте планы запросов одинаковые ?
для 11.2 есть - Bug 8867819

The execution plan may change in release 11.2 since the default behavior for optimizer feedback is now on. Therefore, when no change is made, two SPA trials may report regression depending on the query.

Workaround: For SPA to be consistent, turn off optimizer feedback. Use _optimizer_use_feedback=false.
и еще до кучи покажи
Код:


 SQL> select last_analyzed from all_tables where table_name='Z#BC_MAP_DOC';

LAST_ANAL
---------
05-JUN-12
lexoos
Участник - экстремал


Вступление в Клуб: 06.11.2007
СообщениеВт Июн 05, 2012 05:58    Ответить с цитатой
Полезность: Нет оценки
изначально давал планы выполенния для оракл11 (все рекомендуемые вами параметры оптимизации отсутствуют)

На тесте (оркл10 _optim_peek_user_binds=false, остальные параметры отсутствуют):
Код:
PLAN_TABLE_OUTPUT

Plan hash value: 603318963
 
---------------------------------------------------------------------------------------------------------
| Id  | Operation                     | Name                    | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT              |                         |     1 |    66 | 33308   (2)| 00:06:40 |
|   1 |  NESTED LOOPS                 |                         |     1 |    66 | 33308   (2)| 00:06:40 |
|   2 |   NESTED LOOPS                |                         |     1 |    52 | 33307   (2)| 00:06:40 |
|*  3 |    TABLE ACCESS FULL          | Z#BC_MAP_DOC            |     1 |    30 | 33306   (2)| 00:06:40 |
|*  4 |    TABLE ACCESS BY INDEX ROWID| Z#BC_DOC_TYPES          |     1 |    22 |     1   (0)| 00:00:01 |
|*  5 |     INDEX UNIQUE SCAN         | PK_Z#BC_DOC_TYPES_ID    |     1 |       |     1   (0)| 00:00:01 |
|   6 |   TABLE ACCESS BY INDEX ROWID | Z#BANK_CLIENT           |     1 |    14 |     1   (0)| 00:00:01 |
|*  7 |    INDEX UNIQUE SCAN          | Z#IX_Z#BANK_CLIENT_COL9 |     1 |       |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------------
 
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
 
   1 - SEL$1
   3 - SEL$1 / A1@SEL$1
   4 - SEL$1 / A2@SEL$1
   5 - SEL$1 / A2@SEL$1
   6 - SEL$1 / B1@SEL$1
   7 - SEL$1 / B1@SEL$1
 
Outline Data
-------------
 
  /*+
      BEGIN_OUTLINE_DATA
      USE_NL(@"SEL$1" "B1"@"SEL$1")
      USE_NL(@"SEL$1" "A2"@"SEL$1")
      LEADING(@"SEL$1" "A1"@"SEL$1" "A2"@"SEL$1" "B1"@"SEL$1")
      INDEX_RS_ASC(@"SEL$1" "B1"@"SEL$1" ("Z#BANK_CLIENT"."C_DOCS"))
      INDEX_RS_ASC(@"SEL$1" "A2"@"SEL$1" ("Z#BC_DOC_TYPES"."ID"))
      FULL(@"SEL$1" "A1"@"SEL$1")
      OUTLINE_LEAF(@"SEL$1")
      ALL_ROWS
      OPT_PARAM('optimizer_index_caching' 20)
      OPT_PARAM('optimizer_index_cost_adj' Cool
      OPT_PARAM('_optim_peek_user_binds' 'false')
      OPTIMIZER_FEATURES_ENABLE('10.2.0.4')
      IGNORE_OPTIM_EMBEDDED_HINTS
      END_OUTLINE_DATA
  */
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   3 - filter(TO_NUMBER("A1"."C_OBJ_REF")=230879009)
   4 - filter("A2"."C_CLASS_ID"='BCD_CUR_ORDER' OR "A2"."C_CLASS_ID"='BCD_PAYMENT')
   5 - 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"."COLLECTION_ID"[NUMBER,22],
       "A1"."C_SYS_ID"[VARCHAR2,40]
   3 - "A1"."ID"[NUMBER,22], "A1"."COLLECTION_ID"[NUMBER,22], "A1"."C_SYS_ID"[VARCHAR2,40],
       "A1"."C_BCD_TYPE"[NUMBER,22]
   5 - "A2".ROWID[ROWID,10]
   6 - "B1"."ID"[NUMBER,22]
   7 - "B1".ROWID[ROWID,10]


и простой запрос по obj_ref:
Код:
PLAN_TABLE_OUTPUT

Plan hash value: 757117946
 
----------------------------------------------------------------------------------
| Id  | Operation         | Name         | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |              |     1 |    99 | 33306   (2)| 00:06:40 |
|*  1 |  TABLE ACCESS FULL| Z#BC_MAP_DOC |     1 |    99 | 33306   (2)| 00:06:40 |
----------------------------------------------------------------------------------
 
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
 
   1 - SEL$1 / Z#BC_MAP_DOC@SEL$1
 
Outline Data
-------------
 
  /*+
      BEGIN_OUTLINE_DATA
      FULL(@"SEL$1" "Z#BC_MAP_DOC"@"SEL$1")
      OUTLINE_LEAF(@"SEL$1")
      ALL_ROWS
      OPT_PARAM('optimizer_index_caching' 20)
      OPT_PARAM('optimizer_index_cost_adj' Cool
      OPT_PARAM('_optim_peek_user_binds' 'false')
      OPTIMIZER_FEATURES_ENABLE('10.2.0.4')
      IGNORE_OPTIM_EMBEDDED_HINTS
      END_OUTLINE_DATA
  */
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   1 - filter(TO_NUMBER("C_OBJ_REF")=113165996)
 
Column Projection Information (identified by operation id):
-----------------------------------------------------------
 
   1 - "Z#BC_MAP_DOC"."ID"[NUMBER,22],
       "Z#BC_MAP_DOC"."COLLECTION_ID"[NUMBER,22],
       "Z#BC_MAP_DOC"."C_SYS_ID"[VARCHAR2,40],
       "Z#BC_MAP_DOC"."C_SYS_REF_ID"[VARCHAR2,40],
       "Z#BC_MAP_DOC"."C_DOC_TYPE"[VARCHAR2,40], "C_OBJ_REF"[VARCHAR2,128],
       "Z#BC_MAP_DOC"."C_OBJ_CLASS"[VARCHAR2,32],
       "Z#BC_MAP_DOC"."C_BCD_REF"[NUMBER,22],
       "Z#BC_MAP_DOC"."C_CREATED"[DATE,7], "Z#BC_MAP_DOC"."C_MODIFIED"[DATE,7],
       "Z#BC_MAP_DOC"."C_IS_IN"[VARCHAR2,1],
       "Z#BC_MAP_DOC"."C_DOC_STATE"[VARCHAR2,16],
       "Z#BC_MAP_DOC"."C_BCD_TYPE"[NUMBER,22],
       "Z#BC_MAP_DOC"."C_ERR_DESC"[VARCHAR2,2000],
       "Z#BC_MAP_DOC"."C_GATE_ID"[VARCHAR2,40], "Z#BC_MAP_DOC"."SN"[NUMBER,22],
       "Z#BC_MAP_DOC"."SU"[NUMBER,22]
Serj
Профи


Вступление в Клуб: 02.08.2007
СообщениеВт Июн 05, 2012 06:07    Ответить с цитатой
Полезность: Нет оценки
Код:
begin

 DBMS_STATS.GATHER_TABLE_STATS('IBS','Z#BC_MAP_DOC',cascade=>true,estimate_percent=>5);

end;
/

- выполняем это , затем снова постим сюда план запроса - он должен поменяться
lexoos
Участник - экстремал


Вступление в Клуб: 06.11.2007
СообщениеВт Июн 05, 2012 06:53    Ответить с цитатой
Полезность: Нет оценки
вывалилась ошибка:
ORA-20003: Specified bug number (5099019) does not exist
ORA-06512: на "SYS.DBMS_STATS", line 14481
ORA-06512: на "SYS.DBMS_STATS", line 14501
ORA-06512: на line 2
Serj
Профи


Вступление в Клуб: 02.08.2007
СообщениеВт Июн 05, 2012 07:02    Ответить с цитатой
Полезность: Нет оценки
на ТЕСТОВОМ сервере БД
прогнать скрипты под sqlplus / as sysdba

@?/rdbms/admin/dbmsstat.sql
@?/rdbms/admin/prvtstas.plb
@?/rdbms/admin/prvtstat.plb

затем выполнить сбор статистики по таблице - ошибка должна уйти.

Еще охота посмотреть на вывод запроса select * from sys.aux_stats$
lexoos
Участник - экстремал


Вступление в Клуб: 06.11.2007
СообщениеВт Июн 05, 2012 07:23    Ответить с цитатой
Полезность: Нет оценки
select * from sys.aux_stats$
Код:
SYSSTATS_INFO                  STATUS                                    COMPLET
ED
SYSSTATS_INFO                  DSTART                                    09-16-2
009 11:33
SYSSTATS_INFO                  DSTOP                                     09-16-2
009 11:33
SYSSTATS_INFO                  FLAGS                                   1
SYSSTATS_MAIN                  CPUSPEEDNW                     1388.84462
SYSSTATS_MAIN                  IOSEEKTIM                              10
SYSSTATS_MAIN                  IOTFRSPEED                           4096
SYSSTATS_MAIN                  SREADTIM
SYSSTATS_MAIN                  MREADTIM
SYSSTATS_MAIN                  CPUSPEED
SYSSTATS_MAIN                  MBRC
SYSSTATS_MAIN                  MAXTHR
SYSSTATS_MAIN                  SLAVETHR

13 rows selected.
Serj
Профи


Вступление в Клуб: 02.08.2007
СообщениеВт Июн 05, 2012 07:25    Ответить с цитатой
Полезность: Нет оценки
Ну и славно - системная статистика тут не вредит, получилось по таблице собрать статистику ?
lexoos
Участник - экстремал


Вступление в Клуб: 06.11.2007
СообщениеВт Июн 05, 2012 07:35    Ответить с цитатой
Полезность: Нет оценки
Да
На простом запросе по обжреф:
Код:
PLAN_TABLE_OUTPUT

Plan hash value: 757117946
 
----------------------------------------------------------------------------------
| Id  | Operation         | Name         | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |              |     1 |    99 | 33306   (2)| 00:06:40 |
|*  1 |  TABLE ACCESS FULL| Z#BC_MAP_DOC |     1 |    99 | 33306   (2)| 00:06:40 |
----------------------------------------------------------------------------------
 
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
 
   1 - SEL$1 / Z#BC_MAP_DOC@SEL$1
 
Outline Data
-------------
 
  /*+
      BEGIN_OUTLINE_DATA
      FULL(@"SEL$1" "Z#BC_MAP_DOC"@"SEL$1")
      OUTLINE_LEAF(@"SEL$1")
      ALL_ROWS
      OPT_PARAM('optimizer_index_caching' 20)
      OPT_PARAM('optimizer_index_cost_adj' Cool
      OPT_PARAM('_optim_peek_user_binds' 'false')
      OPTIMIZER_FEATURES_ENABLE('10.2.0.4')
      IGNORE_OPTIM_EMBEDDED_HINTS
      END_OUTLINE_DATA
  */
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   1 - filter(TO_NUMBER("C_OBJ_REF")=113165996)
 
Column Projection Information (identified by operation id):
-----------------------------------------------------------
 
   1 - "Z#BC_MAP_DOC"."ID"[NUMBER,22],
       "Z#BC_MAP_DOC"."COLLECTION_ID"[NUMBER,22],
       "Z#BC_MAP_DOC"."C_SYS_ID"[VARCHAR2,40],
       "Z#BC_MAP_DOC"."C_SYS_REF_ID"[VARCHAR2,40],
       "Z#BC_MAP_DOC"."C_DOC_TYPE"[VARCHAR2,40], "C_OBJ_REF"[VARCHAR2,128],
       "Z#BC_MAP_DOC"."C_OBJ_CLASS"[VARCHAR2,32],
       "Z#BC_MAP_DOC"."C_BCD_REF"[NUMBER,22],
       "Z#BC_MAP_DOC"."C_CREATED"[DATE,7], "Z#BC_MAP_DOC"."C_MODIFIED"[DATE,7],
       "Z#BC_MAP_DOC"."C_IS_IN"[VARCHAR2,1],
       "Z#BC_MAP_DOC"."C_DOC_STATE"[VARCHAR2,16],
       "Z#BC_MAP_DOC"."C_BCD_TYPE"[NUMBER,22],
       "Z#BC_MAP_DOC"."C_ERR_DESC"[VARCHAR2,2000],
       "Z#BC_MAP_DOC"."C_GATE_ID"[VARCHAR2,40], "Z#BC_MAP_DOC"."SN"[NUMBER,22],
       "Z#BC_MAP_DOC"."SU"[NUMBER,22]
Serj
Профи


Вступление в Клуб: 02.08.2007
СообщениеВт Июн 05, 2012 07:48    Ответить с цитатой
Полезность: Нет оценки
Нда--что то тяжеловатый случай
тогда - какой план покажет оптимизатор при
alter session set optimizer_index_cost_adj=1, доступ к metalink - есть ? Note ID 726802.1 https://support.oracle.com/CSP/main/article?cmd=show&id=726802.1&type=NOT - нужно будет через outlines вправить мозги СВО, хотя непойму чего он при выборке по obj_ref не подхватывает индекс.
Гм - если так ... соберем статистику по словарю
DBMS_STATS.GATHER_DICTIONARY_STATS, затем попробовать еще раз выполнить запросик по obj_ref
lexoos
Участник - экстремал


Вступление в Клуб: 06.11.2007
СообщениеВт Июн 05, 2012 07:53    Ответить с цитатой
Полезность: Нет оценки
может индекс не подхватывает, т.к. много записей (если не много больше половины) с пустым обжреф, а оставшиеся оченб часто многократно дублируются?
Serj
Профи


Вступление в Клуб: 02.08.2007
СообщениеВт Июн 05, 2012 08:05    Ответить с цитатой
Полезность: Нет оценки
lexoos пишет:
может индекс не подхватывает, т.к. много записей (если не много больше половины) с пустым обжреф, а оставшиеся оченб часто многократно дублируются?
не, эт не причем, в запросе если пишем where= то, судя по приведенному плану что бы получить 1 строчку с obj_ref СВО тупо смотрит всю таблицу, хотя должен полезть в idx_z#bc_map_doc_obj взять отуда rowid и сразу встать на нужную запись
Serj
Профи


Вступление в Клуб: 02.08.2007
СообщениеВт Июн 05, 2012 08:23    Ответить с цитатой
Полезность: Нет оценки
какой план будет у вот такого запроса ?
Код:

select  * from Z#BC_MAP_DOC where c_OBJ_REF is not null
Plan hash value: 994910549                                                                         
                                                                                                   
----------------------------------------------------------------------------------------------------
| Id  | Operation                   | Name                 | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |                      |     1 |  1282 |     1   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID| Z#BC_MAP_DOC         |     1 |  1282 |     1   (0)| 00:00:01 |
|*  2 |   INDEX FULL SCAN           | IDX_Z#BC_MAP_DOC_OBJ |     1 |       |     1   (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------

lexoos
Участник - экстремал


Вступление в Клуб: 06.11.2007
СообщениеВт Июн 05, 2012 08:28    Ответить с цитатой
Полезность: Нет оценки
индекс не используется:
Код:
PLAN_TABLE_OUTPUT

Plan hash value: 757117946
 
----------------------------------------------------------------------------------
| Id  | Operation         | Name         | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |              |     1 |    99 | 33306   (2)| 00:06:40 |
|*  1 |  TABLE ACCESS FULL| Z#BC_MAP_DOC |     1 |    99 | 33306   (2)| 00:06:40 |
----------------------------------------------------------------------------------
 
Serj
Профи


Вступление в Клуб: 02.08.2007
СообщениеВт Июн 05, 2012 08:34    Ответить с цитатой
Полезность: Нет оценки
хорошо, какой статус у индекса и чему равен cursor_sharing


Код:

select STATUS from all_indexes where INDEX_NAME='IDX_Z#BC_MAP_DOC_OBJ';

STATUS
--------
VALID

lexoos
Участник - экстремал


Вступление в Клуб: 06.11.2007
СообщениеВт Июн 05, 2012 08:36    Ответить с цитатой
Полезность: Нет оценки
тоже valid
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Oracle DBA Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3, 4  След.
Страница 2 из 4

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