Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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'
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'
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'
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 |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|