Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / first_rows и стоимостный оптимизатор / 14 сообщений из 14, страница 1 из 1
23.12.2002, 15:18
    #32083141
Oleg Afanasiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
first_rows и стоимостный оптимизатор
Странная вещь наблюдается .
По умолчанию включен продукционный оптимизатор.
Для некоторых запросов, возвращающих _одну строку_ или _одно значение_ (-это важно-) и ужасно тормозивших, я проставил подсказку first_rows тем самым включив , как я понимаю стоимостный оптимизатор. Получил
увеличение времени отклика примерно в _60_ раз.
Самое интересное то что статистику никто никогда не собирал.
Как можно объяснить такое увеличение времени отклика?
...
Рейтинг: 0 / 0
23.12.2002, 15:23
    #32083144
.dba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
first_rows и стоимостный оптимизатор
>Как можно объяснить такое увеличение времени отклика?

изменением плана выполнения запроса.
...
Рейтинг: 0 / 0
23.12.2002, 15:59
    #32083164
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
first_rows и стоимостный оптимизатор
"Самое интересное то что статистику никто никогда не собирал"

Ты уверен что анализ не проводиося на самом деле?

Проверь:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select 
  owner, 
  table_name, 
  last_analyzed
 from 
  all_all_tables 
 where 
   table_name = 'Имя таблицы в верхнем регистре';
...
Рейтинг: 0 / 0
23.12.2002, 16:35
    #32083209
Oleg Afanasiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
first_rows и стоимостный оптимизатор
2softbuilder:
результат селекта


OWNER TABLE_NAME LAST_ANA
------------------------------ ------------------------------ --------
KREDIT TCRT

НЕ собирал статистику никто и никогда
...
Рейтинг: 0 / 0
23.12.2002, 16:49
    #32083226
Paranoic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
first_rows и стоимостный оптимизатор
А запрос просто через SQL выполняется? Не через PL/SQL?
...
Рейтинг: 0 / 0
23.12.2002, 16:51
    #32083229
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
first_rows и стоимостный оптимизатор
Могу предположить что запрос составлен неправильно или условия для запроса не подготовлены. Если запрос возвращает одну строку, скорее всего это уникальная строка, тогда для RULE достаточно иметь правильно подобранный индекс. Если же эта строка не уникальная , то можно использовать ROWNUM<2 - в этом случае также увеличиться скорость.
Давай свой запрос, план запроса, посмотрим.
...
Рейтинг: 0 / 0
23.12.2002, 17:35
    #32083269
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
first_rows и стоимостный оптимизатор
>OWNER TABLE_NAME LAST_ANA
>------------------------------ ------------------------------ --------
>KREDIT TCRT
>
>НЕ собирал статистику никто и никогда


Тогда CBO подразумевает дефолтные значения статистики таблицы
...
Рейтинг: 0 / 0
23.12.2002, 18:08
    #32083283
ShgGena
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
first_rows и стоимостный оптимизатор
Naskolko i pomnu pri ukazanii prosto FIRST_ROWS Oracle budet schitat NESTED LOOPS kak
osnovnuiu strategiu postroeniya plana vipolneniia.
V etoi situacii na pirviy plan vichodit poriadok perechisleniya tablic vo FROM.
...
Рейтинг: 0 / 0
23.12.2002, 18:11
    #32083288
Oleg Afanasiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
first_rows и стоимостный оптимизатор
Хорошо
Код: plaintext
1.
2.
3.
select count(*) from iost where sch='x' and cval='980' and cvalp='000'
               and data_d in (select max(data_d) from iost
               where sch='x' and cval='980' and cvalp='000' and data_d<='11.11.11')


План

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop

SELECT STATEMENT Hint=CHOOSE		  	 	 	 	      	             	 
  SORT AGGREGATE		  	 	 	 	      	             	 
    INDEX UNIQUE SCAN	PK_IOST	  	 	 	 	      	             	 
      SORT AGGREGATE		  	 	 	 	      	             	 
        TABLE ACCESS BY INDEX ROWID	IOST	  	 	 	 	      	             	 
          INDEX RANGE SCAN	IOST_INDX_3	  	 	 	 



Теперь с подсказкой

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Operation	Object Name	Rows	Bytes	Cost	Object Node	In/Out	PStart	PStop


SELECT STATEMENT Hint=HINT: FIRST_ROWS	 1   	 	 1   	 	      	             	  
  SORT AGGREGATE	                  	          1   	 41   	 	 	      	             	 
    INDEX UNIQUE SCAN	PK_IOST	              1   	 41   	 1   	 	      	             	 
      SORT AGGREGATE		              1   	 50   	 	 	      	             	 
        TABLE ACCESS BY INDEX ROWID IOST	 1   	 50   	 2   	 	      	             	 
          INDEX RANGE SCAN	IOST_INDX_1	 1   	 	 1 


В первом случае запрос выполняется 1.5 секунды во втором 0.03
...
Рейтинг: 0 / 0
23.12.2002, 18:34
    #32083307
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
first_rows и стоимостный оптимизатор
> Получил увеличение времени отклика примерно в _60_ раз.

Так увеличение или уменьшение ? ;)

FIRST_ROWS - изменяет алгоритм вычисления стоимости шагов.
...
Рейтинг: 0 / 0
23.12.2002, 18:49
    #32083313
Oleg Afanasiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
first_rows и стоимостный оптимизатор
Ой точно уменьшение ;P
немножко промахнулся :_)

Если нет статистики я так понимаю он должен брать показатели 50/50
Стоимости тоесть у него примерно все равны.
Может я не правильно выражаюсь но что-то в этом роде :_)
Или нет?

2Gena:
Порядок from важен для продукционного оптиимзатора
...
Рейтинг: 0 / 0
23.12.2002, 18:54
    #32083315
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
first_rows и стоимостный оптимизатор
Он берет дефолтные значения. Навскидку не помню. Можно проверить через эвент, который заставит трассировать логику CBO.
...
Рейтинг: 0 / 0
23.12.2002, 19:13
    #32083326
ShgGena
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
first_rows и стоимостный оптимизатор
event # 10053
chitabelnost faila trassirovki dostatocho nizkaia.
...
Рейтинг: 0 / 0
23.12.2002, 19:20
    #32083330
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
first_rows и стоимостный оптимизатор
там это будет видно хорошо.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / first_rows и стоимостный оптимизатор / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]