powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Интилигентность оптимайзера, база без хинтов - реальность?
25 сообщений из 260, страница 3 из 11
Интилигентность оптимайзера, база без хинтов - реальность?
    #32532110
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Nikolay

Насколько я знаю в 8.2 будет вещь сходная с HINTS только с моей точки зрения реализованная более красиво. Optimization profiles. Некоторый XML документ сужающий для оптимизатора список возможных вариантов оптимизации.

А эти profiles они для базы в целом или для отдельных запросов?

Если для всей базы в целом, то вполне возможно что такие варианты не будут оптимальны в общем случае.

Если же для отдельных запросов, то это те же хинты.

to Gt.

Gtбыло бы наивно считать что ИБМ создала универсальный оптимизатор ...

Разумеется. Но определенных успехов судя по всему он достиг. Как я уже сказала

Violina Создать точную картину как это на самом деле можно конечно, только действительно реально поработав с DB2.

Gtнапример изменения нагрузки или типа доминирующих запрсов, оптимизатор не будет сам менять параметры сервера, например увиличивать себе область сортировки вечером когда идут восновном отчеты, а операторы спят. это может знать только дба.

Да, это еще один пример наряду с first_rows, all_rows когда только dba может знать чего требуется. Но никто не говорит об "устранении" dba. Речь идет о том, чтобы

пользователь указал только то, какие данные ему желательно получить, оставляя на долю оптимизатора запросов РСУБД принятие трудного решения о том, как лучше всего получить доступ к данным и обработать их.

без необходимости шаманства с хинтами и переписыванием запросов.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32532444
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>оптимизатор (любой существующий) сам не может выбрать оптимальный план >просто потому что не учитывает всю информацию (там например пишут что >неучитывает дб2). например изменения нагрузки или типа доминирующих >запрсов, оптимизатор не будет сам менять параметры сервера, например >увиличивать себе область сортировки вечером когда идут восновном отчеты, >а операторы спят. это может знать только дба.

а это просто настройки среды, где выполняются транзакции. скажем, sbs и jobq на AS/400 или региона CICS на мейнфрейме.

для кототких транзакций одни параметры, для длиннах другие.

наример.
кто-то здесь уже получил 666-ую ошибку на аэске.
оптимизатор или кто там на основе статистики решил, что такая длинная транзакция ему не нужна, и не стал ее выполнять.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32532492
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
авторбез необходимости шаманства с хинтами и переписыванием запросов.

такого еще нет. судя по документам тут то же самое что и в оракле - то же шаманство с переписыванием запросов, сбором статистики, комбинациями индексов и т.п. просто в оракле на один шаг гибче - когда совсем глухо можно просто самому нарисовать план. просто в горе программисты в оракле обычно не особо пытаются вьехать почему оптимизатор так поступает и пихают хинты.

ЗЫ. а что за настройка такая - уровень оптимизации ?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32532532
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>ЗЫ. а что за настройка такая - уровень оптимизации ?
понятия не имею.

>такого еще нет. судя по документам тут то же самое что и в оракле - то же >шаманство с переписыванием запросов, сбором статистики, комбинациями >индексов и т.п. просто в оракле на один шаг гибче - когда совсем глухо >можно просто самому нарисовать план. просто в горе программисты в оракле >обычно не особо пытаются вьехать почему оптимизатор так поступает и >пихают хинты.

ну, судя по практике, пишешь запрос, да и все...
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32532659
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Gt.

такого еще нет. судя по документам тут то же самое что и в оракле - то же шаманство с переписыванием запросов, сбором статистики, комбинациями индексов и т.п. просто в оракле на один шаг гибче - когда совсем глухо можно просто самому нарисовать план.

Ну ладно, начальную информацию я получила. Чтобы дальше делать выводы, надо уже плотно поработать с базой и сравнивать конкретные тестовые случаи. Понятно что объективно (в попугаях) оптимайзеры сравнить сложно.

просто в горе программисты в оракле обычно не особо пытаются вьехать почему оптимизатор так поступает и пихают хинты.


Это я уже озвучивала:)

Изначально хинты позиционировались как средство, к которому следует прибегать в виде исключения, чтобы "подтолкнуть" оптимайзер. Но их использование стало скорее нормой
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32532907
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFT_QUERYOPT - уровень оптимизации зароса на уровне БД в DB2 LUW.
Соотвественно в зависимости от уровня увеличивает колчество методов для анализа запросов. Так например
1 уровень только Nested Loop JOIN
3 уровень NL + Merge
5 NL + MERGE + HASH JOIN
В какой-то паралельной сессии кто-то говорил про умность MS оптимизатора что он преобразовывает select * from aa where salary in (select max(salary) from aa where) в select top ...., такая же байда в DB2 включается на 7 уровне.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32533058
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
2Nikolay
если он выставляется глобально на весь инстанс полезность весьма сомнительна. помнится есть такое правило 99-1, типа 1% запросов пораждает 99% проблем.

2Violina
авторИзначально хинты позиционировались как средство, к которому следует прибегать в виде исключения, чтобы "подтолкнуть" оптимайзер. Но их использование стало скорее нормой

то что много програмеров считает это нормой меня мало волнует, даже если таких подавляющее большинство - на мою работу это большинство не влияет, на мою работу влияет мануал, а там такая норма не прописана.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32533087
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
уровень оптимизации could be defined for _each_ query.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32533196
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Violina: Пока документация полностью по Optimization Profiles не готова. Но будет что-то типа если в запросе участвует такая-то таблица повышается приоритетность таких-то индексов. Детализироваться все может вплоть до запроса. Повторюсь более подробной документации пока нет, более подробно смогу ответить не раньше августа.

2ggv: Да конечно ты прав по поводу смены оптимизации вплоть до уровня запроса в транзакции, я всего лишь дал ссылку с чего начать.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32533312
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Nikolay

уровень оптимизации could be defined for _each_ query


В таком случае, я тоже считаю что такая реализация более красивая чем хинты. То что хинты находятся "в теле" самого запроса, ИМХО, не есть гут.

Ведь часто бывает, что запросы в коде приложения исправить нельзя, и если хинты там жестко прошиты или наоборот отсутсвуют, приходится поизощряться, чтобы такой запрос оттьюнить или заставить использовать какой то конкретный план. (В идеале конечно если все делается через хранимые процедуры, то доступ к запросам есть и трогать приложение нет необходимости)

В таком случае нужно взять абсолютно идентичный текст запроса, например из трейс файла и, меняя установки отпимайзера, собрав статиску, получить его выполнение по желаемому плану. Потом можно создать для этого запроса outline, которая будуче включенной, заставит сервер выполнять такой запрос по тому плану, зафиксированному в outline.

Было бы классно, ИМХО, если бы хинты /или скажем нейтрально доп. информация:)/ не писались в самом запросе, а могли прикрепляться к нему DBA по усмотрению. Таким образом было бы четкое разделение

- чисто декларативный стейтмент, какие данные нужно получить. Его пишет программер в своем коде.
- отдельно прикрепленные хинты (доп. информация). Программер поставляет свой начальный вариант, который в данный момент выверен и обеспечивает хороший план выполения. А DBA может в последствии их изменить, если возникнет необходимость.

Но будет что-то типа если в запросе участвует такая-то таблица повышается приоритетность таких-то индексов.

А вот здесь я считаю что все же было бы лучше давать возможность напрямую сказать USE THAT INDEX IF IT IS POSSIBLE как например в Oracle. А то вроде как получается средство управления наподобие. Непосредсвенно руками руль крутить нельзя, а можно лишь дергая за веревочки, привязанные к нему.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32533327
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Violina, в принципе в DB2 и сейчас администратор может поменять запрос (уровнем оптимизации) без вмешательства в приложение усли это static SQL. Или же воспоьзоваться утилитами преобразовать dynamic (некоторую часть) в static и опять же увеличить уровень оптимизации. Для понимания как работает DB2 наверное лучше почитать сначала
http://www-306.ibm.com/software/data/education/selfstudy.html
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32533332
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
"В идеале конечно если все делается через хранимые процедуры," - SP is not ideal, for db2. Seems packages/collections is preferable way, imho.
http://www.db2mag.com/story/showArticle.jhtml?articleID=15300107
http://www.db2mag.com/story/showArticle.jhtml?articleID=17602333
http://www.db2mag.com/story/showArticle.jhtml?articleID=18901299

As for me, I used to use ESQL for utilities, and CLI for big apps ( 'cause of multithreads...), but switched to ESQL (the last reason was two-phase transaction MQSeries & DB2 which works in ESQL only, plus ESQL go 'context' for threads)
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32533356
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
Nikolay Kulikov - I just answered to Gt about "если он выставляется глобально на весь инстанс полезность весьма сомнительна".
I did not correct you :)
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32533380
Oracle XPert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Nikolay Kulikov

То-то и оно, что в DB2 ты работаешь с группами (уровнем оптимизации), а Oracle дает возможность работать с членами групп

Например,
/*+ USE_HASH(tab1, tab2) USE_AJ(tab1, tab3) INDX_FFS(tab3, ind_on_tab3) ordered */

in DB2 невозможен.....
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32533412
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2OracleXper: Ты считаешь что твой хинт будет всегда актуален???
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32533442
ggvP-882148
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oracle XPert - if the lack of hint is so critical it is a reason to use something else, not db2.
You have read above people said they don't use even optimization level. For the development "optimize for <n> rows" is enough.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32533444
Oracle XPert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты считаешь что твой хинт будет всегда актуален???
всегда актуал'ны только плохие дороги и дураки.

Подход разный: ИБМ уменьшает расходы на DBA, увеличивая степень автоматизации принятия решений, думая, что раз и навсегда принятое решение будет единственно верным.
Oracle наоборот, оставляет pешение-резюме за человеком, пред'являя более
высокие требования к его подготовке.

Какой подход вернее в каждом конкретном случае решает руководитель-"оптимизатор".

Знаю обе системы не по-наслышке: с Oracle работаю с 5-ой версии, а с
DB2 - c 7........
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32533563
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Nikolay

Для понимания как работает DB2 наверное лучше почитать сначала


Да, наверное:) Потому что здесь

Или же воспоьзоваться утилитами преобразовать dynamic (некоторую часть) в static и опять же увеличить уровень оптимизации.


ни чё не поняла, особенно про уровень оптимизаци.

to ggvP-882148

if the lack of hint is so critical it is a reason to use something else, not db2.


Так ребром вопрос не стоял:) Просто интересно было узнать из первых рук, действительно ли оптимайзер может обходиться без подсказок DBA для выбора эффективных планов выполнения. И насколько он преуспел в этом начинании.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32533743
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
"действительно ли оптимайзер может обходиться без подсказок DBA для выбора эффективных планов выполнения" - as you see, people here said - it can. For cases when one thinks optimizer works wrong there is a way to correct its work using "Explain" tables. Better would be to ask here - how many dba/developers do it. This is really interesting.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32534323
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"действительно ли оптимайзер может обходиться без подсказок DBA для выбора эффективных планов выполнения" - as you see, people here said - it can
For cases when one thinks optimizer works wrong there is a way to correct its work using "Explain" tables. Better would be to ask here - how many dba/developers do it. This is really interesting
Вопрос в виде "Обходится ли оптимизатор обходится без подсказок DBA" не ставился. Я выше говорил про "попугаев", в которых считает оптимизатор. Вполне возможно, что оптимизатор "в попугаях" считает оптимальные планы.
Т.е. вопрос можно ставить так: правильно ли отражают "попугаи" реальное состояние дел?
Да, кстати, еще важно знать, про то, какая база будет: OLTP или Warehouse.
Для OLTP (а на нее Oracle и был изначально направлен - стоимость блокиовок минимальна) список возможных вариантов SQL-запросов вообще-то обозрим и поэтому, почему бы их не "подкрутить" до кондиции при помощи хинтов?
С Warehouse сложнее... Там возможные запросы непредсказуемы. Ну и каждый запрос отладить - довольно бесполезное занятие. Зачем? Лучше подождать подольше...
М.б. в этом причина отсутсвия хинтов в DB2?
For cases when one thinks optimizer works wrong there is a way to correct its work using "Explain" tables
К сожалению почему-то уровень понимания разработчиками принципов оптимизации очень низкий. Глянешь на систему и видишь, вон там антипаттерн заиспользовали
, там схему неверно развели, там вообще велосипед изобрели. М.б. поэтому я и пошёл в консультанты

_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535142
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
"почему бы их не "подкрутить" до кондиции при помощи хинтов?" - because it's not according relation model, read what Violina wrote.
The ability to tune a query by using "Explain" tables is according relation model, and does not require the query changes.

"М.б. в этом причина отсутсвия хинтов в DB2?" - do you want to say DB2 was designed as a warehouse from the begining? not as OLTP ???

And - nobody yet has proved that multiversion is better than locking. Both schemas have their advantages and disadvantages.

"К сожалению почему-то уровень понимания разработчиками принципов оптимизации очень низкий." - it has nothing to do with optimizer, as you know.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535264
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
because it's not according relation model, read what Violina wrote
Думаю, что Виолина ошиблась. Реляционная модель вроде бы это способ организации хранения информации. Т.е. пять нормальных форм итп. Хинты нужны только оптимизатору, про который реляционная модель ничего не говорит. Если про ANSI SQL говорить, то они для него прозрачны.
Тут дело такое: если мне надо повысить производительность, то любые средства хороши.
"М.б. в этом причина отсутсвия хинтов в DB2?" - do you want to say DB2 was designed as a warehouse from the begining? not as OLTP ???
This is my suggestion only.
And - nobody yet has proved that multiversion is better than locking
Но, согласитесь, когда чтение кто-то блокирует - это действует на нервы. Не админа, а пользователей...
_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535295
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to stdio

stdiobecause it's not according relation model, read what Violina wrote

Думаю, что Виолина ошиблась.

Я не говорила что it is not according relation model. :) Я не могу ни подтвердить, ни опровергнуть сиё утверждение:)

stdioРеляционная модель вроде бы это способ организации хранения информации. Хинты нужны только оптимизатору, про который реляционная модель ничего не говорит.

Именно такая мысль содержалась в высказанной мною идее, см.

Violina wrote
Было бы классно, ИМХО, если бы хинты /или скажем нейтрально доп. информация:)/ не писались в самом запросе, а могли прикрепляться к нему "сбоку" по усмотрению. Таким образом было бы четкое разделение

- чисто декларативный стейтмент, какие данные нужно получить. Его пишет программер в своем коде.
- отдельно прикрепленные хинты (доп. информация). Программер поставляет свой начальный вариант, который в данный момент выверен и обеспечивает хороший план выполения. А DBA может в последствии их изменить, если возникнет необходимость.

Ведь часто бывает, что запросы в коде приложения исправить нельзя, и если хинты там жестко прошиты или наоборот отсутсвуют, приходится поизощряться, чтобы такой запрос оттьюнить или заставить использовать какой то конкретный план.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535316
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и что что чтение блокирует запись. Кого это интересует. Народ интересует кол-во обработанных транзакций за определенное время, время реакции на определенный запрос и так далее. Блокировки и Версии вещи сугубо перпендикулярные этим понятиям. А Хинты не есть то без чего обойтись совсем нельзя.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535390
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно такая мысль содержалась в высказанной мною идее
Не-а. Реляционная теория не рассматривает техническую сторону реализации. Но, тем не менее, идея понятна.
ViolinaБыло бы классно, ИМХО, если бы хинты /или скажем нейтрально доп. информация:)/ не писались в самом запросе, а могли прикрепляться к нему "сбоку" по усмотрению. Таким образом было бы четкое разделение
А как реализовать? Ну и что что сбоку. Предположим, что цепляет тебе приложение хинты сбоку. Ты админ. Ну и что? Что будешь делать? Да ничего, потому что будет та же проблема.

Если приложение нормально писалось, то никаких изобретений не надо. Почему? Потому что в конфигурационные файлы надо SQL-запросы вытащить. Ну а с PL/SQL правда, это сложнее, но, если код не wrapped, то решение очевидно

_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
25 сообщений из 260, страница 3 из 11
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Интилигентность оптимайзера, база без хинтов - реальность?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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