Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 вопрос из области оптимизации  [new]
nxx
Member

Откуда:
Сообщений: 2030
отчего такое может быть...
кост по плану относительно небольшой, а запрос работает долго
или точнее - есть 2 запроса, делают одно и то же (по смыслу)
но разными способами.

запрос1 имеет кост в 2 раза больше, чем запрос2
но работает почему-то раза в 2 быстрее

подскажите куда смотреть
трассировка ? а еще ?

интересуют общие рекомендации

PS уже не первый раз наталкиваюсь на подобные ситуации.
8 июл 09, 10:39    [7389925]     Ответить | Цитировать Сообщить модератору
 Re: вопрос из области оптимизации  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
nxx
запрос1 имеет кост в 2 раза больше, чем запрос2
но работает почему-то раза в 2 быстрее

Сравнивать стоимости 2-х разных запросов абсолютно бессмысленно.
8 июл 09, 10:45    [7389973]     Ответить | Цитировать Сообщить модератору
 Re: вопрос из области оптимизации  [new]
falc
Member

Откуда:
Сообщений: 59
Кост - это некая оценочная величина, а оценки не всегда верны. Есть масса причин, по которым эта оценка может быть не верна, например неверная статистика или корреляция параметров по которым идет выборка или же использование объекта по которому статистики нету в принципе ( pl/sql таблицы ).
8 июл 09, 10:52    [7390018]     Ответить | Цитировать Сообщить модератору
 Re: вопрос из области оптимизации  [new]
nxx
Member

Откуда:
Сообщений: 2030
falc
Кост - это некая оценочная величина, а оценки не всегда верны. Есть масса причин, по которым эта оценка может быть не верна, например неверная статистика или корреляция параметров по которым идет выборка или же использование объекта по которому статистики нету в принципе ( pl/sql таблицы ).


"корреляция параметров по которым идет выборка" - точно нету
"использование объекта по которому статистики нету в принципе ( pl/sql таблицы)" - точно нету

"неверная статистика"

оба запроса работают на вточности одних таблицах,
фильтры абсолютно одинаковые.
разница только в агрегации, последовательности подзапросов и т.п.
8 июл 09, 10:59    [7390058]     Ответить | Цитировать Сообщить модератору
 Re: вопрос из области оптимизации  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
nxx
интересуют общие рекомендации

Читай Performance Tuning Guide, вопрос про общие рекомендации отпадет.
8 июл 09, 11:05    [7390094]     Ответить | Цитировать Сообщить модератору
 Re: вопрос из области оптимизации  [new]
falc
Member

Откуда:
Сообщений: 59
Я всего лишь привел примеры. а не перечислил все возможные причины.

Кост не учитывает вероятность нахождения данных в кеше.
Кост совершено по разному рассчитывается для хеш джойна и нестед лупа, причем этот расчет сильно зависит от системной статистики и настроек оптимизатора.
8 июл 09, 11:07    [7390120]     Ответить | Цитировать Сообщить модератору
 Re: вопрос из области оптимизации  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3696
Человек и Кошка
nxx
запрос1 имеет кост в 2 раза больше, чем запрос2
но работает почему-то раза в 2 быстрее

Сравнивать стоимости 2-х разных запросов абсолютно бессмысленно.

Ну почему же? CBO расчитывает стоимость в попугаях, отнесенных к одноблочным чтениям. Т.е. cost - оценка сложности выполнения запроса. Если предположить что
1) статистика актуальна
2) CBO не ошибался в оценках cardinality на каждом шаге плана
3) CBO правильно рассчитывал попугаи на каждом шаге плана
то сравнивать два плана по косту в принципе имеет смысл. Есть правда одно большое "но" - CBO не идеален и в пп. 2 и 3 могут быть ашипки, поэтому обычно такое сравнение не имеет большого смысла. Когда-нибудь это изменится, точно тебе говорю :)
8 июл 09, 11:29    [7390278]     Ответить | Цитировать Сообщить модератору
 Re: вопрос из области оптимизации  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
Timm
CBO правильно рассчитывал попугаи на каждом шаге плана

Поделишся алгоритмом? ;)
8 июл 09, 11:41    [7390396]     Ответить | Цитировать Сообщить модератору
 Re: вопрос из области оптимизации  [new]
nxx
Member

Откуда:
Сообщений: 2030
Timm
Человек и Кошка
nxx
запрос1 имеет кост в 2 раза больше, чем запрос2
но работает почему-то раза в 2 быстрее

Сравнивать стоимости 2-х разных запросов абсолютно бессмысленно.

Ну почему же? CBO расчитывает стоимость в попугаях, отнесенных к одноблочным чтениям. Т.е. cost - оценка сложности выполнения запроса. Если предположить что
1) статистика актуальна
2) CBO не ошибался в оценках cardinality на каждом шаге плана
3) CBO правильно рассчитывал попугаи на каждом шаге плана
то сравнивать два плана по косту в принципе имеет смысл. Есть правда одно большое "но" - CBO не идеален и в пп. 2 и 3 могут быть ашипки, поэтому обычно такое сравнение не имеет большого смысла. Когда-нибудь это изменится, точно тебе говорю :)


понятно что не идеально
но если отличие в разы или даже на порядки - это вызывает удивление
8 июл 09, 11:46    [7390438]     Ответить | Цитировать Сообщить модератору
 Re: вопрос из области оптимизации  [new]
falc
Member

Откуда:
Сообщений: 59
Да что ты паришься, скинь сюда 2 плана и тебе укажут почему такая разница.
8 июл 09, 11:47    [7390449]     Ответить | Цитировать Сообщить модератору
 Re: вопрос из области оптимизации  [new]
Тупой Пух
Member

Откуда:
Сообщений: 134
Человек и Кошка,

Cost-Based Oracle Fundamentals by Jonathan Lewis
CHAPTER 1 WHAT DO YOU MEAN BY COST?
раздел "So What Is the Cost?"


According to the CPU costing model:
Cost = (
#SRds * sreadtim +
#MRds * mreadtim +
#CPUCycles / cpuspeed
) / sreadtim
where
#SRDs - number of single block reads
#MRDs - number of multi block reads
#CPUCycles - number of CPU Cycles
sreadtim - single block read time
mreadtim - multi block read time
cpuspeed - CPU cycles per second
Translated, this says the following:
The cost is the time spent on single-block reads, plus the time spent on multiblock reads,
plus the CPU time required, all divided by the time it takes to do a single-block read.
Which means the cost is the total predicted
8 июл 09, 11:55    [7390524]     Ответить | Цитировать Сообщить модератору
 Re: вопрос из области оптимизации  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
Тупой Пух,

Спасибо. Я имею в виду алгоритм, отделения правильных попугаев от неправильных ;)

nxx,

Без планов и статистик твоих запросов, разговор ни о чем.
Нарыл в загашниках перевод одной ветки c asktom.oracle.com, может поможет понять в общих чертах.
8 июл 09, 12:34    [7390838]     Ответить | Цитировать Сообщить модератору
 Re: вопрос из области оптимизации  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
nxx,

+ Хорошая статья про возможные ошибки CBO.
8 июл 09, 12:36    [7390861]     Ответить | Цитировать Сообщить модератору
 Re: вопрос из области оптимизации  [new]
nxx
Member

Откуда:
Сообщений: 2030
Человек и Кошка
Тупой Пух,

Спасибо. Я имею в виду алгоритм, отделения правильных попугаев от неправильных ;)

nxx,

Без планов и статистик твоих запросов, разговор ни о чем.
Нарыл в загашниках перевод одной ветки c asktom.oracle.com, может поможет понять в общих чертах.


о, вот за эту ссылку спасибо!
8 июл 09, 12:53    [7390989]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить