Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Nikolay Насколько я знаю в 8.2 будет вещь сходная с HINTS только с моей точки зрения реализованная более красиво. Optimization profiles. Некоторый XML документ сужающий для оптимизатора список возможных вариантов оптимизации. А эти profiles они для базы в целом или для отдельных запросов? Если для всей базы в целом, то вполне возможно что такие варианты не будут оптимальны в общем случае. Если же для отдельных запросов, то это те же хинты. to Gt. Gtбыло бы наивно считать что ИБМ создала универсальный оптимизатор ... Разумеется. Но определенных успехов судя по всему он достиг. Как я уже сказала Violina Создать точную картину как это на самом деле можно конечно, только действительно реально поработав с DB2. Gtнапример изменения нагрузки или типа доминирующих запрсов, оптимизатор не будет сам менять параметры сервера, например увиличивать себе область сортировки вечером когда идут восновном отчеты, а операторы спят. это может знать только дба. Да, это еще один пример наряду с first_rows, all_rows когда только dba может знать чего требуется. Но никто не говорит об "устранении" dba. Речь идет о том, чтобы пользователь указал только то, какие данные ему желательно получить, оставляя на долю оптимизатора запросов РСУБД принятие трудного решения о том, как лучше всего получить доступ к данным и обработать их. без необходимости шаманства с хинтами и переписыванием запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 12:16 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
>оптимизатор (любой существующий) сам не может выбрать оптимальный план >просто потому что не учитывает всю информацию (там например пишут что >неучитывает дб2). например изменения нагрузки или типа доминирующих >запрсов, оптимизатор не будет сам менять параметры сервера, например >увиличивать себе область сортировки вечером когда идут восновном отчеты, >а операторы спят. это может знать только дба. а это просто настройки среды, где выполняются транзакции. скажем, sbs и jobq на AS/400 или региона CICS на мейнфрейме. для кототких транзакций одни параметры, для длиннах другие. наример. кто-то здесь уже получил 666-ую ошибку на аэске. оптимизатор или кто там на основе статистики решил, что такая длинная транзакция ему не нужна, и не стал ее выполнять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 14:07 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
авторбез необходимости шаманства с хинтами и переписыванием запросов. такого еще нет. судя по документам тут то же самое что и в оракле - то же шаманство с переписыванием запросов, сбором статистики, комбинациями индексов и т.п. просто в оракле на один шаг гибче - когда совсем глухо можно просто самому нарисовать план. просто в горе программисты в оракле обычно не особо пытаются вьехать почему оптимизатор так поступает и пихают хинты. ЗЫ. а что за настройка такая - уровень оптимизации ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 14:21 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
>ЗЫ. а что за настройка такая - уровень оптимизации ? понятия не имею. >такого еще нет. судя по документам тут то же самое что и в оракле - то же >шаманство с переписыванием запросов, сбором статистики, комбинациями >индексов и т.п. просто в оракле на один шаг гибче - когда совсем глухо >можно просто самому нарисовать план. просто в горе программисты в оракле >обычно не особо пытаются вьехать почему оптимизатор так поступает и >пихают хинты. ну, судя по практике, пишешь запрос, да и все... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 14:35 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Gt. такого еще нет. судя по документам тут то же самое что и в оракле - то же шаманство с переписыванием запросов, сбором статистики, комбинациями индексов и т.п. просто в оракле на один шаг гибче - когда совсем глухо можно просто самому нарисовать план. Ну ладно, начальную информацию я получила. Чтобы дальше делать выводы, надо уже плотно поработать с базой и сравнивать конкретные тестовые случаи. Понятно что объективно (в попугаях) оптимайзеры сравнить сложно. просто в горе программисты в оракле обычно не особо пытаются вьехать почему оптимизатор так поступает и пихают хинты. Это я уже озвучивала:) Изначально хинты позиционировались как средство, к которому следует прибегать в виде исключения, чтобы "подтолкнуть" оптимайзер. Но их использование стало скорее нормой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 15:09 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
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 уровне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 16:25 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2Nikolay если он выставляется глобально на весь инстанс полезность весьма сомнительна. помнится есть такое правило 99-1, типа 1% запросов пораждает 99% проблем. 2Violina авторИзначально хинты позиционировались как средство, к которому следует прибегать в виде исключения, чтобы "подтолкнуть" оптимайзер. Но их использование стало скорее нормой то что много програмеров считает это нормой меня мало волнует, даже если таких подавляющее большинство - на мою работу это большинство не влияет, на мою работу влияет мануал, а там такая норма не прописана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:11 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
уровень оптимизации could be defined for _each_ query. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:20 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2Violina: Пока документация полностью по Optimization Profiles не готова. Но будет что-то типа если в запросе участвует такая-то таблица повышается приоритетность таких-то индексов. Детализироваться все может вплоть до запроса. Повторюсь более подробной документации пока нет, более подробно смогу ответить не раньше августа. 2ggv: Да конечно ты прав по поводу смены оптимизации вплоть до уровня запроса в транзакции, я всего лишь дал ссылку с чего начать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:58 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Nikolay уровень оптимизации could be defined for _each_ query В таком случае, я тоже считаю что такая реализация более красивая чем хинты. То что хинты находятся "в теле" самого запроса, ИМХО, не есть гут. Ведь часто бывает, что запросы в коде приложения исправить нельзя, и если хинты там жестко прошиты или наоборот отсутсвуют, приходится поизощряться, чтобы такой запрос оттьюнить или заставить использовать какой то конкретный план. (В идеале конечно если все делается через хранимые процедуры, то доступ к запросам есть и трогать приложение нет необходимости) В таком случае нужно взять абсолютно идентичный текст запроса, например из трейс файла и, меняя установки отпимайзера, собрав статиску, получить его выполнение по желаемому плану. Потом можно создать для этого запроса outline, которая будуче включенной, заставит сервер выполнять такой запрос по тому плану, зафиксированному в outline. Было бы классно, ИМХО, если бы хинты /или скажем нейтрально доп. информация:)/ не писались в самом запросе, а могли прикрепляться к нему DBA по усмотрению. Таким образом было бы четкое разделение - чисто декларативный стейтмент, какие данные нужно получить. Его пишет программер в своем коде. - отдельно прикрепленные хинты (доп. информация). Программер поставляет свой начальный вариант, который в данный момент выверен и обеспечивает хороший план выполения. А DBA может в последствии их изменить, если возникнет необходимость. Но будет что-то типа если в запросе участвует такая-то таблица повышается приоритетность таких-то индексов. А вот здесь я считаю что все же было бы лучше давать возможность напрямую сказать USE THAT INDEX IF IT IS POSSIBLE как например в Oracle. А то вроде как получается средство управления наподобие. Непосредсвенно руками руль крутить нельзя, а можно лишь дергая за веревочки, привязанные к нему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 18:45 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina, в принципе в DB2 и сейчас администратор может поменять запрос (уровнем оптимизации) без вмешательства в приложение усли это static SQL. Или же воспоьзоваться утилитами преобразовать dynamic (некоторую часть) в static и опять же увеличить уровень оптимизации. Для понимания как работает DB2 наверное лучше почитать сначала http://www-306.ibm.com/software/data/education/selfstudy.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 19:02 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
"В идеале конечно если все делается через хранимые процедуры," - 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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 19:07 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Nikolay Kulikov - I just answered to Gt about "если он выставляется глобально на весь инстанс полезность весьма сомнительна". I did not correct you :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 19:27 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2Nikolay Kulikov То-то и оно, что в DB2 ты работаешь с группами (уровнем оптимизации), а Oracle дает возможность работать с членами групп Например, /*+ USE_HASH(tab1, tab2) USE_AJ(tab1, tab3) INDX_FFS(tab3, ind_on_tab3) ordered */ in DB2 невозможен..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 19:45 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2OracleXper: Ты считаешь что твой хинт будет всегда актуален??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 20:31 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 21:07 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Ты считаешь что твой хинт будет всегда актуален??? всегда актуал'ны только плохие дороги и дураки. Подход разный: ИБМ уменьшает расходы на DBA, увеличивая степень автоматизации принятия решений, думая, что раз и навсегда принятое решение будет единственно верным. Oracle наоборот, оставляет pешение-резюме за человеком, пред'являя более высокие требования к его подготовке. Какой подход вернее в каждом конкретном случае решает руководитель-"оптимизатор". Знаю обе системы не по-наслышке: с Oracle работаю с 5-ой версии, а с DB2 - c 7........ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 21:08 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
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 для выбора эффективных планов выполнения. И насколько он преуспел в этом начинании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 23:13 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
"действительно ли оптимайзер может обходиться без подсказок 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 08:52 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
"действительно ли оптимайзер может обходиться без подсказок 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 12:47 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
"почему бы их не "подкрутить" до кондиции при помощи хинтов?" - 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 17:02 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 17:52 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to stdio stdiobecause it's not according relation model, read what Violina wrote Думаю, что Виолина ошиблась. Я не говорила что it is not according relation model. :) Я не могу ни подтвердить, ни опровергнуть сиё утверждение:) stdioРеляционная модель вроде бы это способ организации хранения информации. Хинты нужны только оптимизатору, про который реляционная модель ничего не говорит. Именно такая мысль содержалась в высказанной мною идее, см. Violina wrote Было бы классно, ИМХО, если бы хинты /или скажем нейтрально доп. информация:)/ не писались в самом запросе, а могли прикрепляться к нему "сбоку" по усмотрению. Таким образом было бы четкое разделение - чисто декларативный стейтмент, какие данные нужно получить. Его пишет программер в своем коде. - отдельно прикрепленные хинты (доп. информация). Программер поставляет свой начальный вариант, который в данный момент выверен и обеспечивает хороший план выполения. А DBA может в последствии их изменить, если возникнет необходимость. Ведь часто бывает, что запросы в коде приложения исправить нельзя, и если хинты там жестко прошиты или наоборот отсутсвуют, приходится поизощряться, чтобы такой запрос оттьюнить или заставить использовать какой то конкретный план. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 18:01 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Ну и что что чтение блокирует запись. Кого это интересует. Народ интересует кол-во обработанных транзакций за определенное время, время реакции на определенный запрос и так далее. Блокировки и Версии вещи сугубо перпендикулярные этим понятиям. А Хинты не есть то без чего обойтись совсем нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 18:07 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Именно такая мысль содержалась в высказанной мною идее Не-а. Реляционная теория не рассматривает техническую сторону реализации. Но, тем не менее, идея понятна. ViolinaБыло бы классно, ИМХО, если бы хинты /или скажем нейтрально доп. информация:)/ не писались в самом запросе, а могли прикрепляться к нему "сбоку" по усмотрению. Таким образом было бы четкое разделение А как реализовать? Ну и что что сбоку. Предположим, что цепляет тебе приложение хинты сбоку. Ты админ. Ну и что? Что будешь делать? Да ничего, потому что будет та же проблема. Если приложение нормально писалось, то никаких изобретений не надо. Почему? Потому что в конфигурационные файлы надо SQL-запросы вытащить. Ну а с PL/SQL правда, это сложнее, но, если код не wrapped, то решение очевидно _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 18:32 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=32533058&tid=1603768]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 342ms |

| 0 / 0 |
