Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Сразу оговорюсь, что вопросы несколько поверхностные и утрированные. Я с DB2 совершенно не знакома, так что рассматривайте мой постинг как спортивный интерес новичка. Пообщалась тут недавно с DB2-шником, который проявил интерес к Oracle. Я ему пару интересных штук по Oracle рассказала, он мне про DB2. Его впечатлила реализация механизма блокировок в Oracle, а меня механизм разбора и оптимизации SQL выражений в DB2. В частности, что в DB2 хинты отсутсвуют как класс. Факт, то что в Oracle производительность запроса можно увеличить в несколько раз с пом. хинтов, он считает вовсе не крутизной, а скорее кривизной. Вот его примерные слова: "В DB2 не важно как ты напишешь запрос. Запросы оптимайзер преобразует в некий граф с оценкой по статистики, которая всегда поддерживается в актуальном состоянии, что позволяет выбрать оптимальный план. Таким образом в шаманстве по переписыванию запросов в их более оптимальные эквиваленты попросту нет необходимости. Нужно просто написать запрос на выборку нужных данных, а отимайзер преобразует его в оптимальный внутренний эквивалент." Нечто вроде Код: plaintext 1. 2. С моей стороны аргумент был, что разработчик иногда имеет больше информации, или она недоступна оптимайзеру, как лучше выбирать данные, и может указать на это с пом. хинтов. Контраргументом был вопрос, как разработчик может знать состояние данных лучше, чем оптимайзер, если статистика всегда актуальна? Итак, мои вопросы: 1) Буду признательна за интересные ссылки по механизму работы оптимайзера DB2 (только пожалуйста не на углубленную доскональную документацию). 2) Поделитесь впечатлениями по написанию SQL запросов. Дейсвительно вам совсем не приходится переписывать запросы? 3) Бывает ли такое, что оптимайзер заклинивает, и он упорно использует далеко не самый оптимальный план? 4) Слышала, что влиять на оптимайзер, можно с помощью правки статистики напрямую вручную (в Oracle есть нечто похожее optimizer_index_cost_adj). В принципе это тогда почти что тоже самое, что и хинты. to NewYear Рассчитываю на ваше участие:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 11:00 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Поищи в Internet'e про LEO http://www.google.com/search?q=DB2+LEO&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8 HINT кривизна, потому как он может стать не актуальным в силу изменения распределения данных etc... И у оптимизатора не будет возможности выбора, и еще тебе придется переделывать приложение, что не есть гуд. P.S. По мне так Oracle механизм блокировок не есть GOOD для чистого OLTP или DW слишком много ресурсов допоглнительных требует. P.P.S. Вышесказанное есть моя личная точка зрения и не может служить официальным заявлением компании IBM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 11:41 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
>2) Поделитесь впечатлениями по написанию SQL запросов. Дейсвительно вам >совсем не приходится переписывать запросы? ну в общем да. >3) Бывает ли такое, что оптимайзер заклинивает, и он упорно использует >далеко не самый оптимальный план? да, бывает. если написать UDF на С++, и включить ее в запрос. тогда нужно так создавать индексы, чтоб был один возможный план выполнения. это единственный случай, какой я знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 12:15 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
про oracle я знаю только, что там есть какие-то дурацкиe rollback-segments, которые никому не нужны, и что при попытке откатить трарзакцию скажем, в 100 мегов он заваливается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 12:27 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Nikolay HINT кривизна, потому как он может стать не актуальным в силу изменения распределения данных etc... Да, это частая проблема. Изначально хинты позиционировались как средство, к которому следует прибегать в виде исключения, чтобы "подтолкнуть" оптимайзер. Но их использование стало скорее нормой, что в принципе было предсказуемо. По мне так Oracle механизм блокировок не есть GOOD для чистого OLTP или DW слишком много ресурсов допоглнительных требует. ИМХО, как раз в Oracle блокировки не являются дорогим ресурсом. Блокировки в Oracle это просто атрибут данных. В этом отношении механизм отличается от других СУБД. Отсутсвует такое узкое место как менеджер блокировок, это одна из причин почему Oracle практически никогда не делает эскалацию блокировок, в ней просто нет необходимости. Про то, что запись никогда не блокирует чтение, и чтение никогда не блокирует запись вы наверное знаете. И то что нет необходимости подкоммичивать периодически изменения, чтобы освободить ресурсы и предотвратить дедлоки. То что, блокировки это атрибут данных, имеет след. преимущества При выборе данных на изменение или непосредственно изменение данные так и так затрагиваются, так что дополнительные расходы на управление блокировками ничтожны. При коммите Oracle не всегда снимает все блокировки сразу а только частично (если правильно помню 10% от buffer cache), зачем тратить ресурсы и тормозить работу других сессий сразу, например чтобы снять блокировки со 100000 измененных строк? Блокировки это атрибут данных и они просто скидываются на диск вместе с измененными данными. Они будут сняты по мере необходимости другими сессиями. При доступе к таких "неочищенным" от блокировок блокам, обращающейся к нему процесс увидит блокировку и проверив что она уже недействительна, очистит ее или просто перепишет, наложив свою. Таким образом сглаживается расход ресурсов на управление блокировками и равномерно распределяется по времени. Очень удачная аналогия в этом отношении следующая. Есть столовая со множеством столиков, на каждом стоит чайник. Задача - обслужить (напоить чаем) большой поток посетителей. Одно дело когда чай могут разливать только официанты, которые в мыле бегают от столика к столику, другое дело когда клиенты сами могут налить себе чай, не конкурируя друг с другом за такой ограниченный ресурс как официанты. PS В Книге Тома Кайта много подобных очень наглядно и с примерами раскрыто. Если вдруг понадобится узнать об механизмах и особенностях работы СУБД Oracle, его 2 книги это лучший способ узнать о них. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 12:32 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2 Violina: Пока очень кратко. чуть подробнее немного позже.. 2) Поделитесь впечатлениями по написанию SQL запросов. Дейсвительно вам совсем не приходится переписывать запросы? К сожалению, приходится 3) Бывает ли такое, что оптимайзер заклинивает, и он упорно использует далеко не самый оптимальный план? Да, и на базах с большим дрейфом данных - достаточно часто HINT кривизна, потому как он может стать не актуальным в силу изменения распределения данных etc... Not TRUE.[/ color] IBM Optimizer - кривизна по Чебышеву! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 12:32 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
ViolinaБывает ли такое, что оптимайзер заклинивает, и он упорно использует далеко не самый оптимальный план? А как узнать в DB2 что этот план не самый оптимальный? Хинтов-то нет, чтобы вариацию попытаться сделать. М.б. поэтому DB2-ники думают, что сервер им даёт правильные планы? NewYearпро oracle я знаю только, что там есть какие-то дурацкиe rollback-segments, которые никому не нужны Ну Вам-то они может и не нужны... NewYear и что при попытке откатить трарзакцию скажем, в 100 мегов он заваливается Хто заваливается? Сервер? С core dump-ом? _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 12:36 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to NewYear про oracle я знаю только, что там есть какие-то дурацкиe rollback-segments Есть, но почему сразу дурацкие. Это как настроишь базу, так она и себя вести будет. Вы наверное, знаете что Oracle скорее версионник чем блокировочник, rollback segments ему нужны для получения версий данных по состоянию на опрделенных момент времени. Именно они и обеспечивают возможность того, что чтение и запись не блокируют друг друга. Также они используются для отката транзакций. to Oracle X-pert базах с большим дрейфом данных Что имеется в виду под дрейфом данных в вашем случае? PS Мы все таки здесь в гостях, давайте не будем провоцировать на выпады:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 12:39 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
В продолжение... А redo журнал нужен только в случае сбоя, для наката потерянных в результате него изменений. Наличие rollback segments позволяет Ораклу очень быстро писать redo журнал, так как он как бы берет на себя большую часть функций. Поэтому redo журнал пишется очень быстро с одной стороны, с другой стороны нет необходимости скидывать изменные данные на диск именно сейчас. Oracle скидывает их по своему усмотрению, расномерно распределяя нагрузку по времени - еще не закомиченные данные могут быть скинуты на диск или наоборот закомиченные данные могут оставаться в памяти, пока Oracle не сочтет нужным их записать - таим образом избегается еще один bottle neck. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 12:46 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
ViolinaЗапросы оптимайзер преобразует в некий граф с оценкой по статистики, которая всегда поддерживается в актуальном состоянии, что позволяет выбрать оптимальный план. Таким образом в шаманстве по переписыванию запросов в их более оптимальные эквиваленты попросту нет необходимости. Нужно просто написать запрос на выборку нужных данных, а отимайзер преобразует его в оптимальный внутренний эквивалент. Опыт подсказывает (когда-то я занимался схожими алгоритмами), что при большом количестве элементов графа (неколько десятков) будет: - возрастать неточность прогноза либо - возрастать время расчёта (причём нелинейно). Это так? Т.е.: Правильные (оптимальные) ли строятся планы для больших запросов? ViolinaКонтраргументом был вопрос, как разработчик может знать состояние данных лучше, чем оптимайзер, если статистика всегда актуальна? Могу привести пример: разработчик может знать, минимизация чего является целью оптимизации запроса. Либо времени отклика, либо суммарного выполнения запроса. Сервер БД про это никак сам догадаться не может _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 13:02 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to stdio разработчик может знать, минимизация чего является целью оптимизации запроса. Либо времени отклика, либо суммарного выполнения запроса Да, это один из показательных примеров. Читала одну статью противника хинтов, где он и говорил, что это единственный случай когда использование хинтов оправдано. /*+all_rows*/ /*+first_rows*/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 13:10 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2Violina: Хранение блокировок в страницах имеет следствие - более высокиe требования к IO. Это тоже ресурс, Тома Кайта я читал. 2stdio: Вариацию плана можно сделать поигравшись с индексами. Сколько времени ты тратишь на оптимизацию одного сложного запроса??? P.S. Вышесказанное есть моя личная точка зрения и не может служить официальным заявлением компании IBM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 13:27 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Я понятия не имею про какие то там хинты, поэтому не знаю чем они лучше/хуже. Знаю лишь, что в DB2 можно посмотреть планы запроса, рассмотренные оптимизатором, их стоимость и т.д., а также рекомендации по оптимизации плана (чаще всего создание каких - либо индексов). 2 stdio: в DB2 database-engine осуществляет выборку посредством одного из нескольких возможных путей Reading rows directly from the table (dataspace scan processing) Reading rows through an access path (using either key selection or key positioning) Creating an access path directly from the dataspace Creating an access path from an existing access path (index-from-index) Using the query sort routine (if conditions are satisfied) для каждого из этих путей Optimizer выполняет определение стоимости запроса на основе имеющейся статистики, посчитать лучше человек практически не сможет. ЗЫ. Объясните на пальцах, что такое хинты? ЗЗЫ. Виолина - это что массированная атака или просто для стеба ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 13:41 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Nikolay Хранение блокировок в страницах имеет следствие - более высокиe требования к IO. Не в страницах, в блоках. С этим можно было бы согласиться, если бы IO делалось исключительно для блокировок, но поскольку IO так и так делаются в силу изменения данных (при чтении ВООБЩЕ НЕ накладываются какие бы то ни было блокировки), то убиваются сразу 2 зайца, см. мой постинг при выборе данных на изменение или непосредственно изменение данные так и так затрагиваются, так что дополнительные расходы на управление блокировками ничтожны . С затратами которые несет менеджер блокировок и вынужден делать эскалацию, они пренебрежимо малы. PS Ссылки на статьи с описанием методов разбора SQL запросов все еще на повестке дня. Сама я тоже поискать попытаюсь, но наверняка кто то сможет порекомендовать конкретно что то интересное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 13:50 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Ни то не другое. На форуме Oracle я уже давно известна подобными философско-теоретическими вопросами. См. например Транзакционность DDL операций - друг или враг PS Мне действительно интересно узнать об особенностях друих СУБД так сказать из первых рук и плодотворно подискутировать, без таких выпадов типа - ацтой, дурацкие итп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 13:54 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
предпоследнее сообщение для riman ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 13:55 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2Violina: Что в Oracle блок то в остальных CУБД страница. Я имею в виду блокировки занимают место на котором могли бы располагаться данные, да немного места (чем больше конкурентность тем больше. ITL слоты помоему это так называется). Но сканировать-то больше приходится => больший IO. И что означает затраты по сравнению на эскалацию пренебрежительно малы. Пока это звучит голословно. В подтверждение моего тезиса о меньшей эффективности IO Oracle и DB2 посмотри на ничем не примечательные места 5 и 6 в TPC-C tpc.org. Oracle быстее на 1% но и контроллеров у него больше чуть ли не в 2 раза больше P.S. Вышесказанное есть моя личная точка зрения и не может служить официальным заявлением компании IBM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 14:16 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Nikolay KulikovХранение блокировок в страницах имеет следствие - более высокиe требования к IO. Не сказал бы. Всё равно блок на диск писать. Ну заодно в нём и десяток байт под "служебные нужды" поиспользовать. Nikolay KulikovСколько времени ты тратишь на оптимизацию одного сложного запроса??? Смотря какого... ;-) У меня-то лично с Oracle-овым оптимизатором проблем нет. Мы, типа, дружим. Если серьёзно, то с оптимизацией дело обстоит так, что если я вижу "плохой" план, то пытаюсь понять причину его выбора. Как правило, у оптимизатора на это есть какие-то основания. Если причина понятна, то пытаюсь модифицировать SQL-запрос. Вот способы: 1) Использовать exists вместо, in. И наоборот. 2) Написать выражение заведомо так, чтобы индекс не подцепился (если индекс вредит). 3) Пересмотреть принцип построения запроса. итп. rimanЗЫ. Объясните на пальцах, что такое хинты? Хинты - это подсказки оптимизатору, заставляющие его использовать (или говорящие, что _не_ надо использовать) определённый путь доступа к извлечению данных. rimanдля каждого из этих путей Optimizer выполняет определение стоимости запроса на основе имеющейся статистики, посчитать лучше человек практически не сможет. не верю, что оптимизатор делает _полный_ перебор вариантов. Он наверняка сразу откидывает некоторые "ветки" графа как по его мнению заведомо (оптимизатора) неоптимальные. Вот тут он может ошибиться. Кстати, это распространённое заблуждение про "мощь" оптимизатора по сравнению с человеком. Почему: 1) Оптимизатор "думает" очень мало времени. 2) Принципы мышления человека и машины отличаются... К тому же не предлагается строить _все_ планы за оптимизатор. Речь идёт об ответственных и ресурсоёмких/частых запросах. rimanReading rows directly from the table (dataspace scan processing) Reading rows through an access path (using either key selection or key positioning) Creating an access path directly from the dataspace Creating an access path from an existing access path (index-from-index) Using the query sort routine (if conditions are satisfied) Стоп-стоп-стоп. Это ведь про выборку из одной таблицы? Фактически, что тут от оптимизатора требуется, так это сказать, как лезть за данными: через индекс или через полный просмотр таблицы. Интересен вопрос, когда таблиц _несколько_. Тут надо уже рассматривать различные варианты соединения таблиц и разные способы соединения... И поэтому вариантов становится настолько много, что "оценить" каждый нет возможности. Nikolay KulikovВариацию плана можно сделать поигравшись с индексами. А если БД производственная? Кто же разрешит "левый" индекс на БД повесить? А запрос-то нужно написать... И план знаешь, какой должен быть оптимальным... Вот только воздействовать на оптимизатор через индексы у тебя возможности нет. В Oracle это решается как раз использованием хинта. _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 14:43 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
stdio 1) Использовать exists вместо, in. И наоборот. 2) Написать выражение заведомо так, чтобы индекс не подцепился (если индекс вредит). 3) Пересмотреть принцип построения запроса. 1) Не знаю как в Oracle это реализовано, но в DB2 использование exists естесственно, потому что: Код: plaintext 1. 2. 3. 4. 5. 3) не совсем понял, как это? Если Вам нужны эти данные из этих таблиц, как их ещё можно достать? stdio Стоп-стоп-стоп. Это ведь про выборку из одной таблицы? естесственно. stdio Интересен вопрос, когда таблиц _несколько_. вот тогда оптимизатор может подсказать какие ещё индексы нужно создать. Про определение способа соединения оптимизатором я не знаю, надо у Николая или NewYear'a спросить Да и вообще парочка советов по индексам: Код: plaintext 1. 2. 3. 4. 5. А если БД производственная? Кто же разрешит "левый" индекс на БД повесить? А запрос-то нужно написать... И план знаешь, какой должен быть оптимальным... Вот только воздействовать на оптимизатор через индексы у тебя возможности нет. В Oracle это решается как раз использованием хинта. Может тогда администратора к БД вообще не подпускать? Тем более, что плохой индекс оптимизатор точно не использует для плана доступа. ЗЫ. Поправьте, где я ошибся. Абзацы с инглишем - из книжек, копирайты тоже оттуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 15:35 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Nikolay Что в Oracle блок то в остальных CУБД страница. ОК. У меня термин "страница" ассоциируется с несколько "бОльшей" структурой чем блок. Кроме того уровень гранулярности наложения блокировок это строка, а в блоке их может быть несколько. И что означает затраты по сравнению на эскалацию пренебрежительно малы. Пока это звучит голословно. Ну во-первых, сам факт что другие СУБД вынуждены делать эскалацию. Зачем ее делают - затем что поддержка такого критического количества блокировок на более низком уровне сулила бы большие затраты ресурсов и очень ощутимо сказывалась бы на производительности. Или есть другие причины? В Oracle в этом нет необходимости, затраты на блокировки растут линейно с количеством заблокированных строк. По поводу доплонительных IO. Опять же приведу аналогию. Одно дело когда ты не планировал ехать например в центр города, а тебя попросили кого то свозить туда, другое дело когда ты так и так по своей надобности поехал туда и к тебе примазался попутчик. Конечно будут дополнительные затраты на бензин из за возросшей массы (+попутчик), но они не существенны. См. также постинг stdioНе сказал бы. Всё равно блок на диск писать. Ну заодно в нём и десяток байт под "служебные нужды" поиспользовать. Насчет скорости выборки данных (время отклика), возможно что например DB2, MS SQL и MySQL выбирают данные в ряде случаев быстрее чем Oracle. Но также надо учитывать, что какой-нибудь запрос может поставить другие в очередь и сделать обработку попросту последовательной из за наложения слишком "сильных" блокировок. Пусть например MySQL такой быстрый в отношении выборки данных, но какой от этого толк, если Из документации по MySQL This means that if you have many updates on a table, SELECT statements will wait until there are no more updates. To work around this for the case where you want to do many INSERT and SELECT operations on a table, you can insert rows in a temporary table and update the real table with the records from the temporary table once in a while. Ведь в основном проблемы возникают не из за недостаточной скорости чтения данных с диска. И такие проблемы не всегда решишь, раскидав датафайлы по разным дискам или выставив другой размер блока. Действительно серьезные проблемы возникают из-за того, что юзеры начинают конкурировать за "узкие места" и "ограниченные" ресурсы и выстраиваться в очередь. Вот здесь то и сказывается "удачный" механизм реализации блокировок и распределения нагрузок по времени, позволяющий легко сводить такие ситуации к минимуму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 15:51 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
stdioКто же разрешит "левый" индекс на БД повесить? NikolayМожет тогда администратора к БД вообще не подпускать? Здесь встану на сторону Николая:) Меня тоже умиляет тот факт, что собранная статистика может быть большим злом и испортить планы выполнения. Как вывести имена тех таблиц схемы, где есть хотя бы 1 запись???? Способ хороший, но вот когда предлагают собрать статистику для каких-то вспомогательных технических целей - это меня всегда смущает. А что если проект расчитан на использование RULE и optimizer_mode = CHOOSE. Как насчёт последствий? если расчитано на rule, а указано choose (обычная настройка в init.ora), то сбор статистики приведет к возможным проблемам с производительностью системы. Могу привести пример - сбор статистики в oracle Applications 11.0 по рекомендациям консультантов приводил к падению производительности отчетов на 20-30%. К счастью это решаемо Если серьезный проект делают на rule и завязываются на этом, то выставляют режим rule и статистика пофигу. Или же выставляют режим choose и собирают статистику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 16:04 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
riman, мы исходим из разных посылок: Я говорю, что все (оптимизаторы) не идеальны и поэтому должны быть какие-то "ручки" к БД для подкручивания. Вы же исходите из понятия идеального оптимизатора. В принципе, изначальный вопрос Виолины и сводится к тому, что: настолько ли идеален оптимизатор IBM? rimanМожет тогда администратора к БД вообще не подпускать? Добавление к "покупной" системе лишнего индекса может разные последствия иметь: 1) Снижение производительности 2) Потеря тех. поддержки В гос. конторах, вроде ЦБ, админ просто прав по служебным иструкциям такими вещами не имеет прав заниматься. rimanТем более, что плохой индекс оптимизатор точно не использует для плана доступа Мы исходим из разных посылок. _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 16:05 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2 Violina. это я сказал 2 stdio stdioМы исходим из разных посылок. Как я понял Вы полагаете, что оптимизатор может выдать неверный план запроса. Я же говорю, что он показывает лучший из существующих. Если можно написать лучше - Adviser предлагает создать новый план (здесь я не говорю, что этот новый план есть лучший), если администратор может обойтись без него - он пишет свой план. Если всё прошло удачно Adviser больше ничего не посоветует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 16:21 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
rimanКак я понял Вы полагаете, что оптимизатор может выдать неверный план запроса. Вы неправильно меня понимаете. Я полагаю, что оптимизатор может выдать неотимальный план. Вы, наверное, согласитесь, что понятия "неверный план" и "неоптимальный план" - всё-таки разные понятия. И истолковываю "неверный" как синоним слова "неосуществимый". rimanЯ же говорю, что он показывает лучший из существующих. Что значит "лучший"? Оптимизатор оценивает планы в неких виртуальных "попугаях" (С) Шин. Лучший в "попугаях" - возможно. Но почему можно утверждать, что этот план будет самым лучшим на работающей системе? Ведь, если действительно стремиться построить наиоптимальнейший план, то надо учитывать текущую и будущую (на неск. минут, скажем) загрузку дисков и CPU. rimanЕсли можно написать лучше - Adviser предлагает создать новый план (здесь я не говорю, что этот новый план есть лучший), если администратор может обойтись без него - он пишет свой план. Если всё прошло удачно Adviser больше ничего не посоветует Что это за Adviser? Виолина, похоже, им и интересуется. Что он может? Как выглядит? _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 16:49 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Что это за Adviser? Виолина, похоже, им и интересуется. Что он может? Как выглядит? Да, было бы интересным. Но дискуссия тоже интересна. В отношении механизмов построения планов я могу в ней учавствовать пока что только в режиме read only:) PS Кстати в Oracle 10g тоже появился родной SQL Tuning Advisor. И ИМХО в Oracle тоже все идет к тому, что статистика всегда должна быть собранной и автоматически поддерживается uptodate. Оптимайзер становиться все более "умным" и Rule Based Approach просто вымирает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 16:59 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
stdioЧто значит "лучший"? Оптимизатор оценивает планы в неких виртуальных "попугаях" (С) Шин. Лучший в "попугаях" - возможно. Но почему можно утверждать, что этот план будет самым лучшим на работающей системе? Опять Вы за своё, хорошо, возможно Ваш план будет лучше. Но оптимизатор выберет лучший из рассмотренных им. Хотя чей план будет лучше это надо ещё проверить. Способны ли Вы сидеть круглые сутки и собирать постоянно статистику? Нет. Про "неверный" и "неосуществимый" вы меня уделали, здесь я пас.:) Adviser - это я так назвал утилиту для AS/400 - Visual Explain. Обычно она дает советы по оптимизации. ЗЫ. А где все DB2-ники? Я один, что ли лафу гоню на работе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:05 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
:) ViolinaКстати в Oracle 10g тоже появился родной SQL Tuning Advisor. И ИМХО в Oracle тоже все идет к тому, что статистика всегда должна быть собранной и автоматически поддерживается uptodate. Ну вот ещё не много и мы переманим Violin'y ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:08 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Ландно, теперь спрошу ка я у вас, уважаемые конкуренты. Я немного не понял про редо-журнал. По моим представлениям - это объекты в памяти, хранящие изменения в БД. Эти изменения периодически скидываются на диск, во время простоев или в т.п. ситуациях. А если произошел сбой в питании? Данные теряются что ли? Видимо я что то неправильно понял, но: ViolinaПоэтому redo журнал пишется очень быстро с одной стороны, с другой стороны нет необходимости скидывать изменные данные на диск именно сейчас. Oracle скидывает их по своему усмотрению, расномерно распределяя нагрузку по времени - еще не закомиченные данные могут быть скинуты на диск или наоборот закомиченные данные могут оставаться в памяти, пока Oracle не сочтет нужным их записать вот после этого я совсем смутился... Почему "не закомиченные данные скидываюдтся на диск, а "закомиченные" оставаться в памяти??? Очень необычно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:17 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
>ЗЫ. А где все DB2-ники? Я один, что ли лафу гоню на работе? Не ты один, я тож тут, коллега...:-) Наверно было бы полезным вывесить пару скриншотов из Explain-a ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:17 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
:)) 2 DB2-ника, гонящие лафу - это показатель. Ораклоидов (ораклистов) намного больше. :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:24 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
я не дибитушник щас...) я сайбэзист..) волею судеб.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:30 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2Stdio: По поводу того что оптимизатор думает ограниченное время. Не корректно db2advis утилита которой ты подсовываешь workload, ограничение на размер индексов, она передает это соответсвующим образом оптимизатору и он может думать над этим час, два как ты скажешь в конце выдает набор рекомендаций. Опять же можно играться с уровнем оптимизации очень помогает. Да конечно DB2 Optimizer не идеальный и бывают случаи когда надо немного менять схему, когда допустим в Oracle можно обойтись хинтом. Но в 99% случаев он свою работу делает хорошо. Насколько я знаю в 8.2 будет вещь сходная с HINTS только с моей точки зрения реализованная более красиво. Optimization profiles. Некоторый XML документ сужающий для оптимизатора список возможных вариантов оптимизации. Опятьже это делает администратор а не разработчик. Исходя из данных (знаний) которые оптимизатору могут быть не доступны P.S. Вышесказанное есть моя личная точка зрения и не может служить официальным заявлением компании IBM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:30 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Adviser and [Visual] Explain exist for DB2 UDB for U/W/L also. imho. Also there is "optimize for n rows" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:32 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
rimanНо оптимизатор выберет лучший из рассмотренных им. Вот с помощью хинтов оптимизатор и наводят на мысль, что, мол, друг, посмотри сюда, там тебе лучше будет... rimanЯ немного не понял про редо-журнал. По моим представлениям - это объекты в памяти, хранящие изменения в БД. Эти изменения периодически скидываются на диск, во время простоев или в т.п. ситуациях. А если произошел сбой в питании? Данные теряются что ли? Видимо я что то неправильно понял Поясню своими словами. На пальцах. Во время своей работы при изменениии содержимого БД, Oracle скидывает на диск данные. Этих данных достаточно для восстановления БД на момент failure. Поскольку по сути, работа БД это изменение блоков в файлах данных на диске, то в лог пишется старая версия блока и новая версия блока. В результате, за время работы образуется этакая "лента" из журналов. Имея файлы данных на определённый момент времени t0 и применив к ним накопившиеся журналы с этого "определённого" момента времени t0, мы можем восстановить состояние БД на любое время после t0. Nikolay KulikovПо поводу того что оптимизатор думает ограниченное время. Некорректно db2advis утилита которой ты подсовываешь workload, ограничение на размер индексов, она передает это соответсвующим образом оптимизатору и он может думать над этим час, два как ты скажешь в конце выдает набор рекомендаций. Опять же можно играться с уровнем оптимизации очень помогает db2advis != оптимизатор. Оптимизатор это набор внутренних средств БД, которые после передачи SQL-выражения (скажем, клиентской программой) выполняют его анализ и строят "стратегию" его выполнения. gardenmanНаверно было бы полезным вывесить пару скриншотов из Explain-a Да, конечно. _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:41 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Db2advis позволяет использовать весь описанный тобою набор процедур и структур для оптимизации нагрузки на CУБД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:09 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina! Поддай жару! ======== Я так думаю. Оптимизатор ДБ2 работает по принципу [ Rotor H + USE_NL], не зная, что есть и другие способы. Оракловский оптимизатор работает деиствительно как минимизатор маршрута к хранящимся данным, да и разнообразнее.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:09 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Щас мы все тут перегрыземся... Код: plaintext 1. 2. опять же копирайты чьи - то, не мои, источнику верить можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:18 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
извиняюсь, вот так удобнее читать: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:19 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to riman По моим представлениям - это объекты в памяти, хранящие изменения в БД. Эти изменения периодически скидываются на диск, во время простоев или в т.п. ситуациях. А если произошел сбой в питании? Данные теряются что ли? Видимо я что то неправильно понял Нет, есть непосредтвенно блоки данных и есть redo журнал, это две разные разницы. Реду журнал пишется постоянно и без кэширования, сразу на диск - в режиме O_SYNC. Успешность коммита подтверждается тогда и только тогда, когда все redo entries, относящиеся к транзакции, сброшены на диск. Совсем другая ситуация в отношении самих данных. Изменения в них нет необходимости записывать на диск сразу, например если произошел коммит, так и нет необходимости выжидать с записью, Oracle может сбрасывать измененые данные на диск, когда это сочтет нужным, тем самым устроняются узкие места и потенциальные ожидания в таких важных процессах как сброс данных на диск. Существует ряд параметров, позволяющих это поведение тьюнить в зависимости от требований приложения/доступности данных итп. В случае сбоя, по имеющимся redo журналам изменения в блоках данных несброшенные на диск (потерянные) восстанавливаютя путем наката redo журнала на файлы данных или непосредственно на блоки до момента непосредственно предшествующего сбою. См. также Advantages of the Fast COMMIT The fast commit mechanism ensures data recovery by writing changes to the redo log buffer instead of the data files. It has the following advantages: • Sequential writes to the log files are faster than writing to different blocks in the data file. • Only the minimal information that is necessary to record changes is written to the log files, whereas writing to the data files would require whole blocks of data to be written. • If multiple transactions request to commit at the same time, the instance piggybacks redo log records into a single write. • Unless the redo log buffer is particularly full, only one synchronous write is required per transaction. If piggybacking occurs, there can be less than one synchronous write per transaction. • Because the redo log buffer may be flushed before the COMMIT, the size of the transaction does not affect the amount of time needed for an actual COMMIT operation. Note: Rolling back a transaction does not trigger LGWR to write to disk. The Oracle server always rolls back uncommitted changes when recovering from failures. If there is a failure after a rollback, before the rollback entries are recorded on disk, the absence of a commit record is sufficient to ensure that the changes made by the transaction are rolled back. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:24 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to riman Both products can be used to build stable and efficient system and the stability ... Безусловно. У обеих баз есть свои сильные и слабые стороны. Мне просто было интересно узнать о них. Как я уже писала я действительно была впечатлена "спосбоностью" оптимайзера DB2, если он действительно такой умный. И, согласитесь, например метод реализации блокировок в Oracle при котором - не происходит эскалаций - чтение не блокирует запись - запись не блокирует чтение - чтение не накладывает блокировок вообще тоже заслуживает уважения. У меня еще вопрос, тоже несколько утрированный. Прошу не принимать его буквально. Слышала, что у DB2 настолько мощная SQL энджина, что необходимость во встроенном языке программировании практически отсутсвует. Если возможно, можно пару примерчиков, что (какие фичи) имеются в виду? Что можно сделать с пом. SQL, для чего в других языках понадобились бы процедцры и функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:36 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2Violina: вы думаете DB2, MS, Informix по другому пишут в Log и данные на диск? Я вас уверяю идеологически у всех почти все одно и тоже. Причем в DB2 это почти все с самого рождения в 1998 это уже точно все было. У Оracle в отличии от остальных надо писать еще в UNDO tablespaces. Что опять есть дополнительная нагрузка на IO. С другой стороны это плюс для выполнения отчетов по OLTP системе. 2Ora Xpert: Больше конструктивизма, лучше приводить примеры чем сотрясать воздух попусту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:39 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
DB2 CookBook http://ourworld.compuserve.com/homepages/Graeme_Birchall/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:46 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Nikolay Kulikov - plus an URL to a DB2 Information Center -> Reference -> SQL. imho. Violina - "если он действительно такой умный." it is. Try "search" at http://www.db2mag.com ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:51 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Nikolay Я вас уверяю идеологически у всех почти все одно и тоже. Иначе я и не думала. Трудно представить, как это могло бы быть сделано подругому. Просто riman спросил про redo, я ему ответила и указала на разницу работы с самими данными и с журналом. Вопрос опять же, в способах реализации механизма защиты/отката сделанных изменений. У Оracle в отличии от остальных надо писать еще в UNDO tablespaces. Что опять есть дополнительная нагрузка на IO. С другой стороны это плюс для выполнения отчетов по OLTP системе. Да, общий прирост в нагрузке на IO есть, но он частично компенсирован облегчением нагрузки на redo журнал. Откатывать транзакцию и восстанавливать версии данных на определенное состояние эффективнее/быстрее с пом. rollback segments чем проигрывая redo журнал в обратном направлении. rollback segments также цена за отсутстсвие блокировок при чтении/изменении. Классическая дилема - память/быстродейтвие. PS Ссылку посмотрю, может еще вопросы возникнут:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:57 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Эффективнее использовать UNDO вместо REDO в Oracle, не в DB2. Про то как DB2 пишет в журнал можно посмотреть в "Открытых системах" есть статья про ARIES семейство алгоритмов начально разработанных в IBM Research и используемых во многих системах для журналирования. Так же если есть желание можно за денюжку почитать на www.acm.org ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 19:16 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Nikolay Эффективнее использовать UNDO вместо REDO в Oracle, не в DB2. Не сомневаюсь. Естественно раз UNDO информация также лежит в журнале, оптимизация идет в направлении эффективного отката с пом. redo журнала. Я говорю о разделении следующих задач в Оракл - откат транзакций и получение before images и - защита(журнализация) изменений на случай сбоя целями которго являеются в частности - осутствие взаимных блокировок чтение/запись - избежание узких мест/конкуренции при записи в журнал в моменты массивных нагрузок. Другими словами минимизация объемов данных, которые должны быть записаны на диск немедленно и окончания записи которых необходимо обязательно дождаться. Ведь раз UNDO тоже пишется в REDO журнал, оно тоже должно гарантировано быть записано на диск на случай сбоя, чтобы откатить незакомиченные данные на момент сбоя. В Oracle этого делать не нужно, redo журналы для отката как такового не используются, но например измения в rollback segments также защищены redo журналом, так что они (измения в rbs) тоже могут быть записаны Ораклом тогда, когда он сочтет нужным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 19:32 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Насколько я знаю в 8.2 будет вещь сходная с HINTS только с моей точки зрения реализованная более красиво. Optimization profiles. Некоторый XML документ сужающий для оптимизатора список возможных вариантов оптимизации. Опятьже это делает администратор а не разработчик. Исходя из данных (знаний) которые оптимизатору могут быть не доступны В Oracle есть несколько похожая фича - execution plan outlines. Для Ораклоидов Вот нашла интересную статью про LEO http://www.citforum.ru/database/articles/leo.shtml SQL — декларативный язык, т. е. при его использовании требуется, чтобы пользователь указал только то, какие данные ему желательно получить , оставляя на долю оптимизатора запросов РСУБД принятие трудного решения о том, как лучше всего получить доступ к данным и обработать их. Производя мониторинг запросов при их выполнении, самонастраивающийся оптимизатор сравнивает свои оценки с реальной мощностью результата на каждом шаге QEP и вычисляет поправки для оценок. Эти поправки могут использоваться для оптимизации аналогичных запросов в будущем. Более того, обнаружение погрешностей оценок может инициировать повторную оптимизацию запроса в середине его выполнения. Непплохо в общем:) На первый взгляд впечатляет ... Создать точную картину как это на самом деле можно конечно, только действительно реально поработав с DB2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 21:44 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
ViolinaСлышала, что у DB2 настолько мощная SQL энджина, что необходимость во встроенном языке программировании практически отсутсвует. Действительно, на DB2 SQL можно написать процедуру аналогичную полноценому database-приложению, хотя мне больше нравится писать процедуры на Jave. Я где то читал, что PL/SQL у Oracle богаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 09:58 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to riman Действительно, на DB2 SQL можно написать процедуру аналогичную полноценому database-приложению, хотя мне больше нравится писать процедуры на Jave. Нее, я не имела в виду, встроенный язык программирования. У Oracle PL/SQL в этом отношении тоже не слабый. И также есть поддержка явы. Меня интересует именно чистый SQL, который якобы позволяет делать некоторые вещи, для которых в других СУБД пришлось бы прибегать к встроенному языку программирования. Как говорит Том Кайт - если можно, сделай это с помощью одного оператора SQL - если это невозможно, сделай это в PL/SQL - если это невозможно в PL/SQL, сделай это с помощью Java - если это невозможно с помощью Java, сделай внешнюю процедуру на С - если и это невозможно, надо серъезно подумать зачем это вообще нужно вот хотелось бы конкретный пример мощности чистого SQL. Так что пока не приведете пример, буду считать высказывание о SQL энджине мифом:) Я где то читал, что PL/SQL у Oracle богаче. Сравнить не могу, скажу что PL/SQL действительно полноценный многофункциональный язык. Например в PL/SQL есть триггреры на DDL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 11:28 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
было бы наивно считать что ИБМ создала универсальный оптимизатор ... как он работает немеряно доков на их сайте (причем на русском) Administration Guide: Performance ftp://ftp.software.ibm.com/ps/products/db2/info/vr8/pdf/letter/nlv/db2d3r80.pdf Visual Explain Tutorial ftp://ftp.software.ibm.com/ps/products/db2/info/vr8/pdf/letter/nlv/db2tvr80.pdf Индекс сдесь: http://www-306.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/v8pubs_trans.d2w/report оптимизатор (любой существующий) сам не может выбрать оптимальный план просто потому что не учитывает всю информацию (там например пишут что неучитывает дб2). например изменения нагрузки или типа доминирующих запрсов, оптимизатор не будет сам менять параметры сервера, например увиличивать себе область сортировки вечером когда идут восновном отчеты, а операторы спят. это может знать только дба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 11:55 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
a hint is a 'route' to data and it means it has nothing to do with relation model. "Было бы классно, ИМХО, если бы хинты /или скажем нейтрально доп. информация:)/ не писались в самом запросе, а могли прикрепляться к нему "сбоку" по усмотрению" --- imho the best implementation of the idea is optimization with "Explain" tables in DB2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 18:36 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Nikolay Ну и что что чтение блокирует запись. Кого это интересует. Блокировки и Версии вещи сугубо перпендикулярные этим понятиям. Не сказала бы что ээто никого не интересует. Народ интересует кол-во обработанных транзакций за определенное время, время реакции на определенный запрос и так далее. И какое будет кол-во обработанных транзакций за определенное время, если они встанут из такой блокировки? Или такой простой не учитывается в тестах/оценках в силу его "форсмажорности"? :) В тестовых испытаниях/демонтсрациях такие случаи тчательно маскируются или вообще не возникают, поскольку все спланировано так, чтобы такие блокировки не возникли. Кто же захочет опозориться, если его система встанет из за неудачной блокировки. А в реальности проблемы из слишком сильных блокировок и дедлоков возникают сплошь и рядом, особенно из за блокировок на чтение. Я уже писала Насчет скорости выборки данных (время отклика), возможно что например DB2, MS SQL и MySQL выбирают данные в ряде случаев быстрее чем Oracle. Но также надо учитывать, что какой-нибудь запрос может поставить другие в очередь и сделать обработку попросту последовательной из за наложения слишком "сильных" блокировок. Пусть например MySQL очень быстр в отношении выборки данных и времении отклика, но какой от этого толк, если Из документации по MySQL This means that if you have many updates on a table, SELECT statements will wait until there are no more updates. To work around this for the case where you want to do many INSERT and SELECT operations on a table, you can insert rows in a temporary table and update the real table with the records from the temporary table once in a while. Действительно серьезные проблемы возникают из-за того, что юзеры начинают конкурировать за "узкие места" и "ограниченные" ресурсы и выстраиваться в очередь. Вот здесь то и сказывается "удачный" механизм реализации блокировок и распределения нагрузок по времени, позволяющий легко сводить такие ситуации к минимуму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 18:38 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to stdio Потому что в конфигурационные файлы надо SQL-запросы вытащить. Такая здравая мысль и так мало програм, где это делается ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 18:40 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
"А в реальности проблемы из слишком сильных блокировок и дедлоков возникают сплошь и рядом, особенно из за блокировок на чтение." ???????? As for me - that's wrong. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 18:41 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
As for me - that's wrong Плохо то, что транзакция стоит пока какой-то друг не закончит, скажем, выполнять update в _своей_ транзакции и не завершит её. _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 18:46 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
I meant from what I have faced , deadlocks had a place in case of developers mistake, and such mistakes were recognized/fixed in a testing environment, so at hard-working OLTP _real_ system there are NO such problem at all. Of course anyone with appropriate permisions could run "Select * from table" with autocommit off and stop a whole system, but in the same way any one with appropriate permissions could run "rm -rf /" and the result would be even worse. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 18:47 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
авторТакая здравая мысль и так мало програм, где это делается ... дык, да потому что они трезво смотрят на реальность - как запихнуть в конфиг динамический запрос ?? ну например станндартного поиска ... понятно что какую-то часть можно, но проблемы с теми самыми 10% которые обычно динамически генерятся и поэтому на пару листов нечитаемого текста. авторуровень оптимизации could be defined for _each_ query. т.е. чем выше уровень тем дольше будет план перебиратся ? или почему бы не ставить везде наивысший ? оракл знаю может взять неоптимальный план из-за того что решает что быстрей выполнит его чем будеть искать оптимальный, а тут как ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 18:52 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to ggv Ну вот нашла пример. ADM5500W DB2 is performing lock escalation. авторИ все же, не следует забывать, что данные лочатся даже при выборке, и не тянуть с COMMIT\'ом после нее. Типичная неоракловая философия:) А в Oracle транзакция может и должна длиться столько сколько требует бизнес логика. Принудительно подкомичивать ради требований экономии ресурсов СУБД и блокировок нет необходимости. авторЭскалация блокировок - необязательно плохо. LOCK TABLE - почти то же самое, только вручную. Сделать LOCK TABLE в транзакции перед SELECT. Это вообще нонсенс с точки зрения Oracle - делать LOCK всей TABLE в транзакции перед SELECT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 18:54 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to ggv Of course anyone with appropriate permisions could run "Select * from table" with autocommit off and stop a whole system А если продолжительные селекты или селекты с "широким охватом" данных нужно в системе выполнять в силу требований к ней? Тогда обычно начинается - отчеты только вечером или по выходным или мол нужно рядом небольшой DWH ставить. PS Соглашусь с тем фактом, что если изначально писать систему под какой бы то ни было СУБД, четко осознавая ее особенности в частности особенности блокировок и пр., такие проблемы можно свести к минимому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 19:05 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
дык, да потому что они трезво смотрят на реальность Наоборот, смотрят они очень даже нетрезво как запихнуть в конфиг динамический запрос ?? ну например станндартного поиска ... Bind-переменные знаете? Код: plaintext понятно что какую-то часть можно, но проблемы с теми самыми 10% которые обычно динамически генерятся и поэтому на пару листов нечитаемого текста Для OLTP все запросы известны заранее. Их даже рекоммедуется сразу после запуска экземпляра в pool-е прошивать. Но, почему-то это никто не делает... Для тех 10% - вот как раз пришли к тому, про что я и писал: Там возможные запросы непредсказуемы. Ну и каждый запрос отладить - довольно бесполезное занятие. Зачем? Лучше подождать подольше... оракл знаю может взять неоптимальный план из-за того что решает что быстрей выполнит его чем будеть искать оптимальный, Это неверно. Oracle всегда ищет оптимальный (в "попугаях", конечно) план. _______________ Alex There are three kinds of people: those who can count and those who can\'t ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 19:39 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
авторBind-переменные знаете? если система чуть сложнее учета картошки то статическими запросами не отделаешся, я же говорю про динамический - когда система добавляет подзапросы, джоины и т.п. ну например как hibernate.org. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 20:51 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
я же говорю про динамический - когда система добавляет подзапросы, джоины и т.п. Это говорит о том, что схема БД была неправильно спроектирована. Такая интеллектуальная система, думаю, гораздо страшнее безобидных хинтов окажется. А? На http://hibernate.com/ не вижу надобности чего-то делать динамическое. Две таблицы: THINGS и TOPICS. Связь один-ко-многим. Или многие-ко-многим. _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 21:54 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina - the given example is the example of zero level knowledge or about it. Recomended 'Concept' reading. Gt - "т.е. чем выше уровень тем дольше будет план перебиратся ? или почему бы не ставить везде наивысший ? оракл знаю может взять неоптимальный план из-за того что решает что быстрей выполнит его чем будеть искать оптимальный, а тут как ?" www.ibm.com/db2 - could you find an info yourself? If you are interesting in - install DB2, it has a doc with it, and read. Violina - "А если продолжительные селекты или селекты с "широким охватом" данных нужно в системе выполнять в силу требований к ней? Тогда обычно начинается - отчеты только вечером или по выходным или мол нужно рядом небольшой DWH ставить." - no. WHat you have described is a System, where a database is a part only, and with a proper system design and using IBM software it's not so big deal to resolve such 'problem' and don't have reports delayed for night/weekend time. Shell we start with system design overview? I may say only, that all reports can work in parallel with OLTP, and with the different prioriries ( managers have biggest priorities, clerks have lowest) without any deadlock and lock excalation. And it's not so difficult to implement. But such solution involves as db2 tuning and/or utilities, as another IBM software. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 22:14 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
but such System design has a requirements to isolate developers from the production system and pass all request for data getting and SQL statemets through DBA audit. back-end developers had workstation of the same architecture as a server with DB2 installed, and after a compiled binary passed the audit it transfered to the server. With front-end developers it was different story, much cheaper :) I don't think the situation is too differ in other companies. I hope so. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 22:22 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2stdio блин ну детский сад - итак у нас 5 табличек 80 полей, нужно обеспечить поиск по всем полям, очень глупо если ваш поиск будет гнать запрос с джоином на 5 таблиц даже если юзера во сновном ищут по имени. 2ggv авторcould you find an info yourself? типа спецов по дб2 настолько мало что мало кто может ответить на простейшие вопросы ? хоть бы линк на раздел дал ну не знаешь - промолчи зачем на гугл отсылать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 22:47 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Gt - sorry, who did say you about google? I said you about www.ibm.com/db2 , where from you could find db2 doc easy. Also I did say you might install db2 and get the doc with it, if you are interesting. And the doc has a chapter about optimization level. Also there are planty of other resources, but the doc is primary. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 22:57 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
мне не понятно если на их сайте это easy в чем проблема дать прямой линк на документ ? и можно ли дб2 можно скачать официально с их сайта или вы мне воровать предлагаете ? я потратил 5 минут и не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 23:29 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
the good start points are Information Center -> Reference -> SQL -> Queries and subqueries -> Optimization classes; Information Center -> Concepts -> Administration -> Performance tuning -> Application considerations -> Optimization factors -> Optimization class guidelines; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 23:29 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
"я потратил 5 минут и не нашел." - hmm, with such info search ability I see why you have 'problems' :) (just joke) http://www14.software.ibm.com/webapp/download/product.jsp?pf=Linux&s=c&id=TDUN-49EVGU&type=b&presb=&postsb=&cat=data or from http://www-306.ibm.com/software/data/db2/ chose in drop-down list a platform you are interesting in and then click "download" in opened the page. Information Center I have mentioned is available at http://publib.boulder.ibm.com/infocenter/db2help/index.jsp The same you might get after db2 installing. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 23:38 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
что такое Information Center на www.ibm.com/db2 такого нет. в поиске тоже. а что за проблема с прямой ссылкой ? зачем описывать пункты меню ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 23:39 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to ggv Хорошо. поставлю вопрос по конкретнее. Как решается следующая задача в DB2? Есть OLTP система. Продолжительные массивные отчеты не рассматриваем, селекты после завершения сразу комитятся. Данные на редактирование выбираются не только точечными запросами, но и с помощью поиска по различным критериям, возможно повторно с уточнениями, пока не будет найден нужный объект для редактирования. Во вторых некоторые сложные проверки бизнес-правил реализованы с помощью селектов на разные таблицы, частично с применением агрегации. Проверки инициируются либо из триггеров, либо явно перед изменениями. Кроме того в штатные операции входят также вызов простеньких отчетов для простмотра текщего сотстояния - например продажи за сегодняшний день, недавние поступления итп. Вопросы 1) При низкой активности, влияние блокирующих селектов минимально. Но существует ли опасность в силу наложения блокировок при чтении, что при значительном росте количества одновременных пользователей такие штатные селекты в системе могут отрицательно сказаться на ее пропускной способности? Ведь при большом количестве одновременных пользователей селекты(обобенно с агрегацией) и операции изменения данных будут "мешать" друг другу. Пожалуйста обоснуйте ответ, хотя бы на том уровне, на каком я рассказала про механизм блокировок в Oracle. Тирады типа "excellent IBM software lets you solve any problems" не надо. 2) Если такие проблемы будут иметь место, какими путями они решаются при таком механизме блокировок как в DB2? Грязное чтение не предлагать. 3) Если работающий селект натыкается на измененную но незакомиченную запись, которую ему нужно учесть, он ждет? Какие еще могут быть решения, кроме как требование коммитить как можно быстрее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 09:24 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
чудес не бывает. http://www.redbooks.ibm.com/redbooks/pdfs/sg244725.pdf This scenario illustrates how commit frequency affects the performance of DB2 applications. In 3.5, “Summary of Recommendations” on page 107, we made some recommendations related to the need to commit frequently to avoid locking so much data as to compromise system concurrency. Of course, committing frequently to release locks has a cost. The commit frequency must be a compromise between availability and concurrency of data , and also performance of DB2 applications. ..... 5.1.3 When to Commit? The question, then, is when to commit. We have seen that frequent commits is expensive because of increased CPU consumption and elapsed time, and infrequent commits hurts concurrency . Given a theoretical commit frequency interval of 50 updates, the total interval time for those 50 updates (that is, the total time the pages are actually locked), depends on the program access path, the physical disposition of the updates (in case of page or row locking), and the CPU cost of the accesses. Adding more logic to the program, so that it commits every 0.5 to 5 seconds, appears to be a useful approach. The exact value can be determined based on the needs of the environment, the characteristics of the program, and the longest running SQL statement in the program. If any SQL call takes more than 5 seconds, any possible commit interval based control is of no use, as previous locks remain until the SQL finishes. We recommend modifying the database design (for instance, adding one more index) or the logic of the program. If this is not possible, then the only solution is to insert a commit point before the long SQL call so that all previous locks are not held until the long SQL call finishes. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 10:21 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina - the system you have described is one to one our VoIP accounting/mediation/billing system. The system is distributed - many points over internet. The system has high load - the throughput up to 13 Mbps. And so on, and so force. You will be wondered - but it works. Works for two years now. Do you think the whole business use Oracle only? do you really think so? You will be wondered again, but abroad companies still use sybase. Informix is used really widely, and of course DB2. It's not first time I see oracle dba think there are no any other rdbms except their favorite. Unfortunatelly, I don't have any time and willing to make here a short courses. One thing is to answer to a question where the author has faced a problem and did everything for its solving including searching/reading/learning, the other thing is to spend the time answering to one who is at the postition "I don't know, I did not search, I did not learn, I did not try, and you all have to explain" And I'd prefer to read here, not to post, I know there are many much experienced people here, and probably I know the reason they ignore the discussion. Perhaps I have to also. I just make money out of DB2, I don't do any research. Thank you. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 10:30 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
I'd chose sybase but not oracle for a project, if I did not have db2. Sybase has an excellent memory management, if to compare the lack of it in oracle ('named buffer pools'), and sybase has it for years, since 10.x, if I remember correctly. That is more important for 'real' system, than locking problem. Don't ask me here what is a 'named bufferpool'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 11:04 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to ggv You will be wondered - but it works. Works for two years now. Do you think the whole business use Oracle only? do you really think so? It's not first time I see oracle dba think there are no any other rdbms except their favorite. Ну вот... Я же просила без выпадов. Я же задала конкретные технические вопросы - возникают ли проблемы в описанной ситуации и как они решаются в DB2. Жаль, что ответ по существу и пример из доки я получила от Ораклоида, а не от представителей DB2. Действительно, сладывается впечатление что Gt.типа спецов по дб2 настолько мало что мало кто может ответить на простейшие вопросы ? хоть бы линк на раздел дал ну не знаешь - промолчи зачем на гугл отсылать ? ggvIt's not first time I see oracle dba think there are no any other rdbms except their favorite. Это не так. Я спросила про оптимизатор и привела пример, что понравилось моему знакомому специалисту по DB2 в Oracle - механизм блокировок. Сразу последовал выпад, что механизм реализован неудачно. Приведу экстракт завязавшейся дискуссии по поводу механзима блокировок. NikolayПо мне так Oracle механизм блокировок не есть GOOD для чистого OLTP или DW слишком много ресурсов допоглнительных требует. Абсолютно необоснованное утверждение. Можно было бы гордо упоминуть на zero knowledge of the matter, кинуть ссылками на concepts и порекомендовать поставить Oracle. Но я решила попытаться развеять такое заблуждение. Violina Блокировки в Oracle это просто атрибут данных. В этом отношении механизм отличается от других СУБД. Отсутсвует такое узкое место как менеджер блокировок, это одна из причин почему Oracle практически никогда не делает эскалацию блокировок , в ней просто нет необходимости. Про то, что запись никогда не блокирует чтение, и чтение никогда не блокирует запись вы наверное знаете . И то что нет необходимости подкоммичивать периодически изменения, чтобы освободить ресурсы и предотвратить дедлоки. Последовал контраргумент, что такой механизм означает большие дополнительные затраты IO. NikolayХранение блокировок в страницах имеет следствие - более высокиe требования к IO. Было объяснено почему это не так. ViolinaС этим можно было бы согласиться, если бы IO делалось исключительно для блокировок, но поскольку IO так и так делаются в силу изменения данных ( при чтении ВООБЩЕ НЕ накладываются какие бы то ни было блокировки ), то убиваются сразу 2 зайца, см. мой постинг при выборе данных на изменение или непосредственно изменение данные так и так затрагиваются, так что дополнительные расходы на управление блокировками ничтожны. С затратами которые несет менеджер блокировок и вынужден делать эскалацию, они пренебрежимо малы. Плюс аналогия с попутчиком ViolinaОпять же приведу аналогию. Одно дело когда ты не планировал ехать например в центр города, а тебя попросили кого то свозить туда, другое дело когда ты так и так по своей надобности поехал туда и к тебе примазался попутчик. Конечно будут дополнительные затраты на бензин из за возросшей массы (+попутчик), но они не существенны. Был контраргумет по поводу наличия "совершенно ненужных избыточных" сегментов отката. NewYear там есть какие-то дурацкиe rollback-segments, которые никому не нужны Было объяснено, что сегменты отката не полностью повторяют redo журнал а частично облегчают его. Так что избыточность rollback segments не равна 100% а намного ниже. INSERT генерит много redo, но мало undo. DELETE наоборот. В случае update имеет место некоторая избыточность, однако в случае изменения "маленького" значения на "большое" и наоборот имеет место ситуация, аналогичная INSERT / DELETE. ViolinaЯ говорю о разделении следующих задач в Оракл - откат транзакций и получение before images и - защита(журнализация) изменений на случай сбоя целями которго являеются в частности - осутствие взаимных блокировок чтение/запись - избежание узких мест/конкуренции при записи в журнал в моменты массивных нагрузок. Другими словами минимизация объемов данных, которые должны быть записаны на диск немедленно и окончания записи которых необходимо обязательно дождаться. Был задан встречный вопрос/аргумент, что если есть только redo журнал, то просто необходимо больше данных писать в него (+ UNDO данные, которые в Оракл пишуться в сегменты отката). И окончания записи всех этих данных при комите нужно обязательно дождаться. Violina Ведь раз UNDO тоже пишется в REDO журнал , оно тоже должно гарантировано быть записано на диск на случай сбоя , чтобы откатить незакомиченные данные на момент сбоя. В Oracle этого делать не нужно, redo журналы для отката как такового не используются , но например измения в rollback segments также защищены redo журналом , так что они (измения в rbs) тоже могут быть записаны Ораклом тогда, когда он сочтет нужным. Реакции на него не последовало. И так, описанный механизм блокировок в Oracle имеет следующие фичи - не происходит эскалаций - чтение не блокирует запись - запись не блокирует чтение - чтение не накладывает блокировок вообще - минималистическая политика блокировок, блокируется только то, что нужно И называть его просто так с потолка "неудчным" для OLTP систем по крайней мере несколько странно. Что мы имеем в DB2 - блокирующее чтение - эскалация блокировок - необходимость комитить как можно чаще, чтобы освободить ресурсы Замечательно. Вот более "удачный" механизм для OLTP систем. Какие же аргументы приводяться. NikolayНу и что что чтение блокирует запись. Кого это интересует. Блокировки и интересует кол-во обработанных транзакций за определенное время, время реакции на определенный запрос и так далее. Версии вещи сугубо перпендикулярные этим понятиям. Интересный агрумент. И главное с чего решили, что механизм блокировок Oracle снижает время отклика, а у DB2 повышает? Если селект натыкается на изменненные данные, он берет старую версию из сегментов отката, да в этом случае это делается чуть дольше чем просто чтение, в DB2 же в этом случае тоже будет задержка, пока данные не закомитят или откатят. Слкдующий аргумент - эти проблемы вроде как решаемы, однако описание конкретных способов приведено не было, Только Gt. привел подтверждение их наличия и описание мер, которые необходимо принимать чтобы обеспечить a compromise between availability and concurrency of data. Потом последовали выпады, не имеющиме ничего общего с технической стороной вопроса. По поводу Sybase has an excellent memory management, if to compare the lack of it in oracle ('named buffer pools'), and sybase has it for years, since 10.x, if I remember correctly. Не надо просто искать точный эквивалент:) В Oracle есть опция CACHE для таблицы и есть три пула, каждый со своим механизмом кэширования DEFAULT Кэширование/вытеснение по частоте использования. RECYCLE Предназначен для данных которые с очень низкой вероятностью могут быть использованиы снова. Изолированность таких данных в пуле RECYCLE предотвращает вытеснение ими данных, которым следует находиться в кэше. KEEP Привилигерованный пул. Кэширование/вытеснение по частоте использования. Объекты в нем конкурируют только с другими привилигированными объектами а не со всеми остальными. Как раньше было в очередях за пивом - обычная очередь (DEAULT), и очередь с заднего хода (KEEP), где пиво продается дороже, но и очередь поменьше:) В зависимости от особенностей использования, можно назначть таблице или индексу тот или иной пул, где они будут "ошиваться". Данный механизм обеспечивает не менее эффективный memory management. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 13:09 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
ну а как поисходит изоляция транзакций? если меня интересует уровень RR, скажем. я что, так и буду работать с какой-то версией, а в это время кто-то изменит данные или прочитает неверные данные? я пишу mission-critical application, и у меня на первом месте стоит сохранность данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 13:53 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
в Oracle слишком сложно писать внешние процедуры, которые используют SQL, по сравнению с DB2, я читал доки. из-за дополнителных действий с бд. если дадите ссылку, покажу пальцем, где что именно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 14:00 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
PL/SQL гораздо богаче дибитушного SPL. в DB2 считается нормой SQL programming using host languages. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 14:08 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
про некоторые фичи, скажем Oracle Advansed Queuing, мне просто смешно читать. в сравнении с WebSphere MQ. или это к теме не относится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 14:29 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Oracle нет на AS/400. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 14:30 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
а ПК и UNIX это тоска смертая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 14:33 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
зы. Купил книжку по Oracle 8/8i щас дочитаю её и задам вопросы, а то всё вы нас клюете... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 14:50 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
riman, не покупай книжки, они только место занимают. я недавно переезжал, пришлось выкинуть килограмм 15 книжек. лучше уж наладонник. да еще и про оракле. у него и книжки толстые и не удобные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 14:59 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Дорогая Violina, убедительная просьба внимательнее читать мои сообщения и анализировать Про IO не трудно догaдаться DB2 пишет в журнал транзакций и БД, блокировки в памяти. Oracle пишет в БД, REDO, UNDO. Считаем сколько пространства занимает ITL на странице. Cмотрим в документацию по Oracle и видим (28 + 24*кол-во заинтересованных транзакций) байта У меня осталась старая конфигурация с одной из прeвыдущих работ 28 + 24 *4 = 124 байта. Размер блока 124/2048*100=6% 6% IO в системе идет на поддержание механизмов блокировки Oracle. Посчетайте для своей и скажите нам от то что получилось у вас. Смотрим на практически одинаковые машины в тесте tcp-c места 1,5,6 и внимательно анализуируем конфигурации и показанную производительность С другой стороны вы не доказали что ожидание на блокировке и Lock Escalation это более ресурсоемко чем порождение новой страницы в памяти и запись ее в UNDO TableSpace что помимо IO требует еще и дополнительной памяти P.S. Вышесказанное есть моя личная точка зрения и не может служить официальным заявлением компании IBM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 15:13 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
авторPL/SQL гораздо богаче дибитушного SPL. в DB2 считается нормой SQL programming using host languages. естественно, т.к. других вариантов нет. то что внешние процедуры зло уже поняли все производители субд, и IBM тоже, но добавить свой язык в 2 субд сразу нереально. то же самое с версионной моделью, уже коню ясно что это большая фича, весь опенсоурс это версионики, MS добавили версионность, IBM бы и рада - но опять же в 2 субд ... и на счет мэйнфрейма - кому этот пережиток прошлого нужен ? чтоб водружать туда Linux как это предлагает IBM ? за такие деньги ?? я понимаю еслиб он еще мог показать хоть какой-то результат на TPC, а так это для тех кто подсел и не может с 60х годов свое ПО переписать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 15:15 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Хе, а я шел - шел, смотрю старичок книжки продает, смотрю Оракл (новенькая ещё, Виолину вспомнил... эт сетра короче). Да и дешево совсем - 3 бакса. Пусть стоит, под моник поставлю или ещё куда зы. Наладонник это хорошо, только денег нема, пока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 15:15 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
авторСмотрим на практически одинаковые машины в тесте tcp-c места 1,5,6 и внимательно анализуируем конфигурации и показанную производительность и делаем вывод - что дб2 сколько IO не наращивай - результата не будет, поэтому все рекорды последних лет IBMу приходится делать на оракле, т.к. если туда поставить достаточно контролеров то можно попробывать обогнать конкурента по железу. как только дб2 на новыз процах скинут с 1 места IBM запустит на них оракл и все встанет на свои места, так было всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 15:20 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to NewYear авторну а как поисходит изоляция транзакций? если меня интересует уровень RR, скажем. я что, так и буду работать с какой-то версией, а в это время кто-то изменит данные или прочитает неверные данные? я пишу mission-critical application, и у меня на первом месте стоит сохранность данных. В Oracle 2 уроня изоляции READ COMMITED и SERIALIZABLE Код: plaintext 1. 2. 3. 4. 5. То что вы хотите достигается уровнем SERIALIZABLE. я что, так и буду работать с какой-то версией, а в это время кто-то изменит данные Oracle в этом отношении не полный версионник. То есть такие сюрпризы из-за одновременного изменяющего доступа в одной и той же строке не откладываются до коммита а проявляются немендленно. См. здесь Oracle9i - read uncommitted ViolinaИнтересно так же поведение при возникновении блокировок, когда наша транзакция пытается изменить строку, уже изменненую в другой транзакции после начала нашей. В нашей транзакции возникнет ожидание, до тех пор пока другая транзакция не будет завершена - коммитом или ролбэком. При ролбэке в нашей транзакции все пройдет так, как быдто бы другой транзакции и не было. При коммите произойдет следующее. Если уровень изоляции нашей транзакции READ COMMITTED, то изменение будет успешным. Мы как бы смогли увидить новые данные и изменить их. В случае если уровень изоляции нашей транзакции SERIALIZABLE, мы получим отлуп ORA-08177: can\'t serialize access for this transaction Если вы не хотите, чтобы юзер ждал окончания транзакции другого юзера. Можно делать предварительно select * from update nowait и информировать его сразу что ресурс заблокирован. или прочитает неверные данные В Oracle dirty read отсутсвует, так что неверные данные он не прочитает. В Oracle запросы согласованы на момент его начала и выполняются в режиме serializable. Так же исклчены такие ситуации, описанные ниже для MS SQL Oracle9i - read uncommitted vc123Under the default READ COMMITTED IL, SQL Server does not leave behind any locks -- as soon as the row is read, the lock is removed. This can lead to well-known anomalies with inconsistent aggregates or incorrect bank transfers (I believe at least one of them is described in the Kyte book). The problems of course can easily be fixed programmatically. Moving up to a higher isolation level, REPEATABLE READ, may and does create deadlocks in the situations where RC IL leads to inconsistencies. NewYearв Oracle слишком сложно писать внешние процедуры, которые используют SQL, по сравнению с DB2, я читал доки. из-за дополнителных действий с бд. если дадите ссылку, покажу пальцем, где что именно. Возможно. Но ... Принципы разработки под Oracle я уже приводила - если можно, сделай это с помощью одного оператора SQL - если это невозможно, сделай это в PL/SQL - если это невозможно в PL/SQL, сделай это с помощью Java - если это невозможно с помощью Java, сделай внешнюю процедуру на С - если и это невозможно, надо серъезно подумать зачем это вообще нужно Внешние процедуры в Oracle пишут когда нужны очень массивные вычисления с данными, с которыми лучше справятся например модули написанные на С чем PL/SQL программы. Писать внешние процедуры чтобы использовать SQL имхо не логичный подход. Этовсе равно что ездить в Мюнхен из Питера чтобы купить пиво "Балтика". Oracle Advansed Queuing, мне просто смешно читать. В сравнении с WebSphere MQ. или это к теме не относится? Относится, мне интересно узнать про фичи DB2 из первых рук. Так что не стесняйтесь, рассказывайте:) С утверждением согласна, Oracle Advansed Queuing не так сильно развито, до его появления вообще был проблематично с решениями задач, решать которые призвано Oracle Advansed Queuing. В Oracle есть еще поддержка pipes, что эффективно позволяет решить множество задач, в DB2 наверняка тоже есть. а ПК и UNIX это тоска смертая. В смысле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 15:21 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to riman Да, ваши аргументы меня убедили:) Завтра начинаю учить DB2. Вы не там книжки смотрите. Стоимость хороших книжек по Oracle 700-1000 рублей, за границей 30-60 Евро. А вот книжек по DB2 трудно найти, нет спроса нет предложения, не так уж сильно распостранена эта СУБД. PS Только без обид, каков наезд таков отет:) to Nikolay Про lock escalation я значит не так выразилась, извиняюсь. Я имела в виду что дополнительное IO меньшее "зло" чем lock escalation, ИМХО. 28 + 24 *4 = 124 байта. Размер блока 124/2048*100=6% Размер блока и INITTRANS/MAXTRANS можно менять. При резком скачке заитересованных транзакций, Oracle может занимать место из свободного места блока, предназначенно для данных. Если хочеться сэкономить место, например для редко изменяемых справочников, можно INITTRANS в 1 выставить и pctfree в 0, стандартный прием. Так что вместо 6% можно написать и 2% и 10%. А на мой встречный вопрос/аргумент по поводу IO и записи UNDO в журнал будет реакция? Правильно мое предположение или нет? Если нет то аргументы ... Violina Ведь если есть только redo журнал, то просто необходимо больше данных писать в него (+ UNDO данные, которые в Оракл пишуться в сегменты отката). И окончания записи всех этих данных при комите нужно обязательно дождаться. ... Ведь раз UNDO тоже пишется в REDO журнал , оно тоже должно гарантировано быть записано на диск на случай сбоя , чтобы откатить незакомиченные данные на момент сбоя. В Oracle этого делать не нужно, redo журналы для отката как такового не используются , но например измения в rollback segments также защищены redo журналом , так что они (измения в rbs) тоже могут быть записаны Ораклом тогда, когда он сочтет нужным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 15:44 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina. Какая разница где покупать? Хорошая книжка может и не в таких местах лежать. А кстати это хорошая книжка по Ораклу или нет: Использование Oracle8/8i Специальное издание. Издательство "Вильямс" Москва-Санкт Петербург - Киев. 1999г. Автор Вильям Дж. Пейдж. Купил то я её только в целях ознакомления. [quot Violina]...аргументы меня убедили:)[quot] Кажется вы меня опять путаете с кем-то :), хотя.. давайте переходите... на тёмную сторону силы :) [quot Violina]...книжек нет..[quot] У меня столько книжек по DB2 - большая сов. энциклопедия. Кто ищет тот и обрящет. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 16:01 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Gt. при чем мейфрейм? покажи пальцем, где я сказал про мейнфрейм. SP - может и зло. не знаю. я их не использую, как правило. >естественно, т.к. других вариантов нет. то что внешние процедуры зло уже >поняли все производители субд, и IBM тоже, но добавить свой язык в 2 субд >сразу нереально. зачем добавлять еще язык, если и так можно писать на чем угодно? "других вариантов нет, кроме как писать на чем угодно" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 16:05 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to riman А кстати это хорошая книжка по Ораклу или нет: Использование Oracle8/8i Специальное издание. НЕТ!!! Но я по ней учить Оракл начинала за отсутствием чего то лучшего в то время. На самом деле действительно хороших книг по Oracle очень мало, так что выручает только документация. Кто ищет тот и обрящет. :) Это да. Кстати у меня тоже есть одна. Завтра скажу название (на ПТ чтобы здесь не засорять) а вы мне скажете хорошая ли она. По Оракл хорошие книги Oracle для профессионалов, Том Кайт Oracle проектирование баз данных, Дейв Энсор Oracle PL/SQL для профессионалов, С. Фейерштейн ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 16:08 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to NewYear зачем добавлять еще язык, если и так можно писать на чем угодно? "других вариантов нет, кроме как писать на чем угодно" Когда есть втроенный платформонезависимый язык все же приятней. Знаете такую несколько шуточную притчу про программное обеспечение - а именно гибкость versus простота использования. Крайние варианты - постовлять клиентам программу где есть только кнопка "сделать". Нажимая ее юзер получает желаемые результаты - поставлять клиентам ... компайлер!, мотивируя компайлер это такая мощная гибкая штука, с пом. нее вы сможетесделать все что захотите, только вам придется поппотеть На этой шкале Oracle лежит ближе к варианту "кнопка" а DB2 к варианту "компайлер":) А написать свой язык для DB2 сейчас действительно нереально. Oracle проделал большой путь в PL/SQL - наработки, объединение PL/SQL и SQL энджин итп. Такое не сделаешь за год и это потребует больших затрат девелоперских ресурсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 16:17 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina >ORA-08177: can't serialize access for this transaction Ну, значит я получу отлуп :) Не уверен, что этот вариант лучше, чем блокировка. посуди сама -- если 2 транзакции делают UPDATE одной строки с SERIALIZABLE, одна из них обязательно получит отлуп. а вот так что будет :) insert into test values ('A' , ... ); insert into test values ('B' , ... ); транзакция A select * from test where id = 'A' into :A update test set data = :A where ID = 'B' транзакция B select * from test where id = 'B' into :B update test set data = :B where ID = 'А' MQ это не фича db2 а другой продукт, просто Oracle AQ на нее похоже. есть что-то похожее у Microsoft, называется MSMQ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 16:32 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. The above is a very-well known (to any Oracle developer) example of so-called write skew anomaly under SNAPSHOT isolation. ( Despite the 'SERIALIZABLE' name, what Oracle really has is correctly called SNAPSHOT isolation ). The anomaly is trivially fixed by a judicious use of 'select for update'. The so-called locking scheduler, of which DB2 is an example along with Sybase/SQL Server/et cetera, does not have this anomaly thanks to locking the relevant rows. However, any locking scheduler has a much nastier anomaly that allows incorrect aggegates (sum/avg/etc) in the Read Committed isolation for which there is no good cure at all. VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 17:22 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
NewYear - as for me, IBM MUST supply MQSeries with DB2. MQ solves many problems, and which Violina mentioned also. I'd say - MQ usage is a keyword of a system design.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 17:27 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
ViolinaС утверждением согласна, Oracle Advansed Queuing не так сильно развито, до его появления вообще был проблематично с решениями задач, решать которые призвано Oracle Advansed Queuing. В Oracle есть еще поддержка pipes, что эффективно позволяет решить множество задач, в DB2 наверняка тоже есть Эх, Виолина, Виолина. Ну кто же так легко с голословными утверждениями соглашается? Я имею опыт работы с MQ и могу сказать, что у MQ нет по сравнению с AQ, так это интегированности транзакций очередей и транзакций БД. Было, вон на одном предприятии: поставили MQ, приехало сообщение, что фура с скоропортящимися продуктами на таможне стоит. Програмка, перетаскивающая сообщения в БД - бац и свалилась. Технический итог: сообщение извлечено из очереди, а в базу не записано. Фактически, сообщение потерялось... Финансовый итог: фура простояла на таможенном посту 3 дня. Продукты протухли. С AQ такой фокус не прошёл бы: транзакция, однако. К тому же восстановление очередей AQ при сбое ПО идёт вместе с БД. Про недоделанность AQ тоже не соглашусь. JMS они имплементируют. В чём проигрывает AQ - это в потенциальной скорости (около 1000 сообщений/секунду). По сути, скорость ограничевается скоростью выполнения DML операций в БД. 2Gt. Про hibermate напишу как освобожусь. Вы пока объясните мне, зачем нужно иметь там по 80 полей в таблице? _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 17:28 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
/topic/87266 эх, stdio, ручки ваши кривые... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 17:40 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
авторВы пока объясните мне, зачем нужно иметь там по 80 полей в таблице? 80 в 5 таблицах, по 16 полей в каждой, да в принципе не важно сколько, важно, что незачем посылать запрос где хитро сплетаются 5 таблиц когда достаточно "select name from table1 where name like ..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 17:45 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2Violina: Давайте не использовать слово IMHO и "мне кажется" только осязаемые измеримые аргументы. Violina Ведь если есть только redo журнал, то просто необходимо больше данных писать в него (+ UNDO данные, которые в Оракл пишуться в сегменты отката). И окончания записи всех этих данных при комите нужно обязательно дождаться. DB2 нет _UNDO_ данных почему DB2 должна писать больше в transaction log непонятно ??? Если вам интересно как DB2 пишет в журнал часть теории можно почитать здесь http://]http://www.osp.ru/os/2004/03/066.htm www.acm.org за деньги, ну и конечно документацию по DB2. Violina Ведь раз UNDO тоже пишется в REDO журнал, оно тоже должно гарантировано быть записано на диск на случай сбоя, чтобы откатить незакомиченные данные на момент сбоя. В Oracle этого делать не нужно, redo журналы для отката как такового не используются, но например измения в rollback segments также защищены redo журналом, так что они (измения в rbs) тоже могут быть записаны Ораклом тогда, когда он сочтет нужным. Еще раз забудте про UNDO здесь его пока нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 18:37 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to NewYear Ну, значит я получу отлуп :) Не уверен, что этот вариант лучше, чем блокировка. посуди сама -- если 2 транзакции делают UPDATE одной строки с SERIALIZABLE, одна из них обязательно получит отлуп. Это и есть обычная блокировка/ожидание:) Которая возникает если изменена и еще незакомичена строка а другой сеанс пытается изменить ее тоже. Здесь можно выбрать - ждать окончание другой транзакции или получать отлуп сразу. посуди сама -- если 2 транзакции делают UPDATE одной строки с SERIALIZABLE, одна из них обязательно получит отлуп. Уж не хотите ли вы сказать что в DB2 есть dirty write ? Я не поверю! Что произойдет в DB2 если будет попытка изменить уже измененную незакомиченную строку в другом сеансе? Да тоже самое - блокировка. Оракл не 100% версионник, такой субд вроде не существует. В 100% версионнике можно было бы действительно работать со своей версией данных сколь угодно без учета что происходит "снаружи" а о сюпризах узнавать только при коммите. Но такая реализация имеет интерес чисто теоретический. Так что сюрпризы из-за одновременного изменяющего доступа в одной и той же строке не откладываются до коммита а проявляются немендленно при возникновении конфликта. Если же речь идент о желании перепичать закоммиченные данные, используйте уровень изоляции read commited. а вот так что будет :) insert into test values ('A' , ... ); insert into test values ('B' , ... ); это побочный эффект того что select не накладывает какие бы то нибыло блокировки. Частая ошибка девелоперов перешедших с других СУБД, где блокирование селектом частый прием. Если вышеописанная логика необходима, используйте select for update. to stdio Эх, Виолина, Виолина. Ну кто же так легко с голословными утверждениями соглашается? О MQSeries знаю по наслышке, что это отдельный мощный многофункциональный продукт, что подтвердил NewYear. О том догоняет ли его AQ могу только делать догадки, я счмтала что AQ догнать пока не успел:) Спасибо что просветили. to ggv MQ solves many problems, and which Violina mentioned also. Какие из? И как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 18:52 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Nikolay 2Violina: Давайте не использовать слово IMHO и "мне кажется" только осязаемые измеримые аргументы. В отношение пишеться ли UNDO и как в DB2 это были мои догадки. Поэтому я и использую ИМХО и поэтому просила вас о коментарии по этому поводу. За ссылку и объяснение спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 18:58 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
To: Nikolay Kulikov <quote> DB2 нет _UNDO_ данных почему DB2 должна писать больше в transaction log непонятно ??? Если вам интересно как DB2 пишет в журнал часть теории можно почитать здесь http://]http://www.osp.ru/os/2004/03/066.htm </quote> That's quite a statement from a DB2 practitioner... Well, let me surprise you -- DB2 does have 'undo data'. While Oracle supports ROLLBACKs with a separate structure called the "undo tablespace" or "rollback segments", IBM's DB2 stores both redo and undo portions of the log in one place (transaction log). Any database implementing rollback must have a way to preserve undo information. I hope there would be no argument about that. VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 19:17 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to vc123 Well, let me surprise you -- DB2 does have 'undo data'. While Oracle supports ROLLBACKs with a separate structure called the "undo tablespace" or "rollback segments", IBM's DB2 stores both redo and undo portions of the log in one place (transaction log). Any database implementing rollback must have a way to preserve undo information. I hope there would be no argument about that. Для меня это тоже /не побоюсь этого слова:)/ кажется очевидным о чем я и спрашивала. Именно об этом я и говорила. to Nikolay Очень интересная статья! еще раз спасибо. Если не возражаете у меня есть пара вопросов. Используется широко известный метод упреждающей журнализации (write ahead log, WAL), предполагающий, что записи о некоторой операции над базой данных попадают на жесткий диск раньше, чем в базу вносятся изменения, произведенные этой операцией. Здесь отличий от Oracle нету. Еще раз забудте про UNDO здесь его пока нет. Как это нет? Давайте рассмотрим пример: 1) транзакция удалила строки 2) транзакция перезаписала во многих строках старые значения полей новыми (все изменения в оперативной памяти не помещаются) 3) коммит не пока не делается 4) происходит сбой Вопрос При восстановлении незакомиченные изменения нужно откатить. Где находится undo информация - данные удаленных строк, старые значения измененных строк? Разве не в журнале? Поскольку в ARIES на журнал возлагается вся ответственность за восстановление данных , записи журнала достаточно сложны, содержат массу информации и в зависимости от журнализуемого действия имеют различную структуру. Скажем, запись, помещаемая при обычной работе транзакции, несколько отличается от так называемой компенсационной записи (compensation log record, CLR), помещаемой в случае частичного или полного отката транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 19:25 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
To: Nikolay Kulikov <quote> DB2 нет _UNDO_ данных почему DB2 должна писать больше в transaction log непонятно ??? Если вам интересно как DB2 пишет в журнал часть теории можно почитать здесь http://]http://www.osp.ru/os/2004/03/066.htm </quote> That's quite a statement from a DB2 practitioner... Well, let me surprise you -- DB2 does have 'undo data'. While Oracle supports ROLLBACKs with a separate structure called the "undo tablespace" or "rollback segments", IBM's DB2 stores both redo and undo portions of the log in one place (transaction log). Any database implementing rollback must have a way to preserve undo information. I hope there would be no argument about that. VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 19:34 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
I apologize for the double posting. My IE timed-out the first time. VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 19:43 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
ну, господа теоретики, тогда просвещайте. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. есть вот токая строка Record images . . . . . . . . . IMAGES *AFTER возможные значения Record images (IMAGES) - Help Specifies the kinds of record images to be written to the journal for changes to records in the file. The possible values are: *AFTER Only after images are written to the journal for changes to records in this file. *BOTH The system writes both before and after images to the journal for changes to records in this file. как это можно связать с _UNDO_ данными ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 19:45 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
New Yearэх, stdio, ручки ваши кривые... Вы должны знать, что: 1) Переход на личности является некорректным приёмом ведения дискуссии. По сути же Вы ничего не написали. К тому же: 2) Программу писали не мы, а Ваши коллеги. Крупными партнёрами IBM в России они, вроде бы числятся. Название конторы приводить не буду. 3) И Вы хотите, сказать, что выполнять двухфазную фиксацию транзакции очень удобно? И она страхует от ошибок и от дублирования информации? Ведь так или иначе Вы должны сделать: commitMQ, затем commitDB или commitDB, затем commitMQ Если сбой происходит между коммитами, то сообщение теряется и дублируется соответственно. Gt.80 в 5 таблицах, по 16 полей в каждой, да в принципе не важно сколько, важно, что незачем посылать запрос где хитро сплетаются 5 таблиц когда достаточно "select name from table1 where name like ..." А что одной таблицей с 16+1 полями обойтись нельзя? И делать запрос типа: select name from table where name like '...' and q_context = Номер. Ну, и индекс, конечно по name и q_context сделать... _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 20:12 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Вы должны сделать: commitMQ, затем commitDB или commitDB, затем commitMQ вовсе нет. commit толко один -> commitMQ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 20:17 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
commit толко один -> commitMQ А в БД транзакцию когда фиксировать? _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 20:27 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Возможно я некорректно сказал B DB2 нет UNDO журналов. В DB2 есть transaction log на основании которого делается ROLLBACK и производится восстановление после сбоя, ROLLFORWARD. transaction log состоит из записей достаточных как для ROLLBACK (UNDO) так и для ROLLFORWARD (REDO). Logging Proceess http://publib.boulder.ibm.com/infocenter/db2help/index.jsp?topic=/com.ibm.db2.udb.doc/admin/c0005425.htm Update process http://publib.boulder.ibm.com/infocenter/db2help/index.jsp?topic=/com.ibm.db2.udb.doc/admin/c0005426.htm И этот IO меньше чем в ORACLE. Cмотрим и анализируем отчеты TPC-C места 5,6 Oracle 8-hour log (GB) 1,743.58 И это только REDO logs. DB2 8 Hour Log (GB) 801.79 P.S. Вышесказанное есть моя личная точка зрения и не может служить официальным заявлением компании IBM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 20:42 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Привет С интересом почитал нитку. И, хотя были моменты "на грани фола", в целом мне понравилось, что есть таки в форуме люди, умеющие вести разумную дискуссию, не срываясь на flame. Надеюсь, что продолжение будет в том же доброжелательном духе. riman2 stdio: в DB2 database-engine осуществляет выборку посредством одного из нескольких возможных путей Reading rows directly from the table (dataspace scan processing) Reading rows through an access path (using either key selection or key positioning) Creating an access path directly from the dataspace Creating an access path from an existing access path (index-from-index) Using the query sort routine (if conditions are satisfied) Я выделил заинтриговавший меня метод извлечения данных. Правильно ли я понял, что в DB2 индексы также как-то связаны между собой, как индекс и таблица? В Oracle подобного нет. Мне известны лишь два случая (bitmap join пропускаю для простоты), когда при доступе к источнику данных, которым является таблица, на конкретном шаге выполнения запроса используется > 1-го индекса, или один и тот же индекс используется дважды: a) AND-EQUAL Код: plaintext 1. 2. 3. b) BITMAP MERGE (если память не изменяет) Код: plaintext 1. 2. 3. 4. Всего -- Andrei Kriushin (Oracle8/8i/9i OCP DBA), RDTEX J.S.C. Disclaimer: Opinions are of my own and not necessar(-il)y... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 21:05 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
To: NewYear UNDO == before images. Even if 'before images' are disabled, DB2 would automatically write them anyway for transactions (in DB2 jargon 'commitment control'). Apparently, you'd benefit from re-reading IBMs manuals as they say exactly that: Код: plaintext 1. VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 21:06 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
авторА что одной таблицей с 16+1 полями обойтись нельзя? И делать запрос типа: select name from table where name like '...' and q_context = Номер. Ну, и индекс, конечно по name и q_context сделать... мда :) наверно можно - но только ради премии, за самый оригинальный подход :) если поля нужны из 3 табличек, то вы каким методом джоин будете делать ? или метод джоина в своих хинтах прописывать бум ??? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 21:17 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
stdio: - have you heard ever about X/Open Distributed Transaction Processing XA Specification? And how it relates to MQ - amqzag04.pdf from ibm.com sould help. http://www-306.ibm.com/software/integration/mqfamily/library/manualsa/manuals/crosslatest.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 21:33 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Gt.если поля нужны из 3 табличек, то вы каким методом джоин будете делать ? Так мы вроде бы на одной таблице договорились? Откуда ещё две появились? ggvhave you heard ever about X/Open Distributed Transaction Processing XA Specification? Слышал, но внимания не уделял. Правда, в ближайший месяц мне как раз придётся с XA немного повозиться. Вот как удачно всё складывается. ;-) Но с распредёлёнными транзакциями в СУБД встречался и знаю, что они не без греха: может возникнуть т.н. in-doubt transaction. _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 22:16 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
авторТак мы вроде бы на одной таблице договорились? Откуда ещё две появились? ок, играем в дурочка :) есть 5 табличек, в них 80 полей, поиск должен уметь искать по всем полям всех таблиц, запросы иногда бывают простенькие возвращающие поля 1 таблички, иногда сложные возвращающие поля всех таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 23:02 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
in-doubt transaction != греха, but the normal situation with well-known predefined result ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 07:45 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Visual Explain screenshot ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 08:50 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
скриншот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 08:52 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Ж) извиняюсь, у меня тоже в первый раз по таймауту вылетело... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 08:56 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2 Ааз Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 09:06 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina: you see, you ask questions almost about system design. Using db2 governor, MQSeries, and OS level resource management (solaris and aix) we have an ability to assign resource (like CPU - first at all) to groups of tasks according their privileges. But it's up to a system design. For example now we have a system where direct access to a database have only a few rare running tasks with almost an access to summary tables, which do not compete with others tasks. Again I may repeat that the db2 itself as an RDBMS is a part of a system only. The other part is, for example, LDAP server. IBM LDAP server. Which is based on db2, of course. And a big part of the info placed in it , with access over LDAP protocol with all its advantages, and with transaction control and triggers usage. In the described system we have an only issue with locking problem when two or more UOW are trying to update the same row, and it happens often according our business logic, and of course it's solved by serialized access to the row. There are a lot of 'non-standard' things in the system from the point of view of a 'standard' DBA/developer, but it looks normal from the system architect point of view. oralce memory management (different type of caches) looks poor if to compare even with sybase 10.x imho. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 10:47 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Nikolay Спасибо за объяснения. Признаюсь, я не предполагала что в отношении redo logs у Oracle избыточность такого масштаба по сравнению с DB2. В общем теперь у меня есть более или менее реальное представление в этом вопросе. to gvv Using db2 governor, MQSeries, and OS level resource management (solaris and aix) we have an ability to assign resource (like CPU - first at all) to groups of tasks according their privileges. В Oracle это встроенная фича. С пом. profiles можно ограничить CPU_PER_SESSION SESSIONS_PER_USER CONNECT_TIME IDLE_TIME LOGICAL_READS_PER_SESSION И с помощью resource manager можно делать fine grained management of CPU resources для различных групп - в зависимости от вида активности, времени суток (типа по выходным и внерабочее время можно на просмотр отчетов больше времени выделить). direct access to a database have only a few rare running tasks with almost an access to summary tables, which do not compete with others tasks. Обычный метод применения summary tables (materialized views) для разгрузки "горячих" таблиц со соответсующими соображениями - тратить ресурсы на их постоянное поддержание uptodate или позволить delay. oralce memory management (different type of caches) looks poor if to compare even with sybase 10.x imho. Ну, я еще не упомянула про multiple buffer pools в зависимости от размера блока заданного для объектов. Возможно конечно, что такой уровень гранулярности как named pools позволяет творить чудеса. Хотелсь бы увидеть пример задачи/проблемы, которую можно эффективно решить используя named pools и которую было бы сложно или невозможно решить в модели Oracle. Гарантировано удержать важные объекты в кэше модель Oracle тоже позволяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 11:28 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Splain wrote По поводу оптимизации запросов: http://citforum.ru/database/articles/sql_optimization.shtml Если обратиться к истории, то узнаем, что написанием оптимизатора Oracle занимались в том числе и бывшие сотрудники IBM. Большинство разработок новых и их практическая реализация производились в лабораториях IBM. Поэтому нет ничего удивительного в том, что оптимизатор SQL запросов DB2 лучше, современее и меньше ошибается. Тому подтверждение - LEO - усовершенствованный алгоритм оценки селективности предикатов. Собственно говоря поэтому в DB2 отсутствуют хинты как класс - они там просто не нужны. Думаю и Оракл придет к этому через некоторое время. Однако это скорее доставляет некоторое неудобство и увеличение времени разработки разработчикам и на конечном пользователе и производительности промышленных баз не должно особо сказываться. Дискусия по поводу undo - от лукавого. В этом смысле у DB2 и Оракл просто разные сегменты рынка. Это особенности работы СУБД, и не более. Соответсвенно и сравнивать их глупо - в каждом иднивидуальном случае ответ будет разным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 11:57 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Splain Это особенности работы СУБД, и не более. Из одного прикола "А давайте объявим этот баг фичей ..." Особенности бывают удачно реализованные и неудачно. Дискусия по поводу undo - от лукавого. Понятно что нет таких универсальных попугаев в которых можно все объективно сравнить, но поговорить о плюсах и минусах все же можно, хотя бы с познавательной точки зрения. В этом смысле у DB2 и Оракл просто разные сегменты рынка. Не поняла аргумент? Что дейсвительно настолько разные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 12:08 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina >"А давайте объявим этот баг фичей ..." то же самое про select for update, чтоб заблокировать запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 12:17 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to NewYear Неблокирующий селект не случайный побочный эффект а поставленная цель в достижении минимального наложения блокировок. И то что он не блокирует, это большое преимущество и достижение. Селект он предназначен для чтения, а не для блокирования. Просто из за его блокирующих свойств во многих СУБД разработчики быстро взяли этот эффект на вооружение. А завязывать логику программы на побочных эффектах и применять фичи не по назначению это не есть gut. Если вы хотите заблокировать данные, вы делаете это явно select for update. Если вы их просто читаете, вы не накладываете никаких блокировок и не мешаете другим сеансам. Вот и всё. PS Таких примеров использования не по назначению уйма. Например в Oracle появились фичи flashback database/flashback queries - можно запрашивать базу по состоянию на момент времени в прошлом. Уже назревают попытки использовать такую фичу для хранения исторической информации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 12:42 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Gt.есть 5 табличек, в них 80 полей, поиск должен уметь искать по всем полям всех таблиц, запросы иногда бывают простенькие возвращающие поля 1 таблички, иногда сложные возвращающие поля всех таблиц Вы мне предлагаете последствия неправильного дизайна разбирать? Давайте о чём-то конкретном говорить. Про hibermate я сказал, как всё замечательно раскладывается: таблица-справочник категорий и таблица элементов. _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 12:45 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
А аргумент, вот мол чтобы у нас заблокировать запись досточно написать select from а у вас надо писать select from for update просто смешон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 12:48 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina >Просто из за его блокирующих свойств во многих СУБД разработчики быстро >взяли этот эффект на вооружение это тебе так кажется. если б я реально писал те транзакции, я бы про блокировки даже и не вспомнил. я понимаю это так: oracle, когда пишешь любую транзакцию, нужно помнить, а может данные уже изменены, а я читаю устаревшие данные. это явно баг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 12:59 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina: "В Oracle это встроенная фича. С пом. profiles можно ограничить" - exactly. Oracle way is "All in one". IBM way is "A set of tools/utilities", if to say in short. Anyhow - to get understanding and to be able to use better to read DB2 concept, and about governor, and about MQSeries, and it definitelly won't be enough. That "встроенная фича" is just different, and works in a different way, than something 'similar' from IBM software. "Хотелсь бы увидеть пример задачи/проблемы, которую можно эффективно решить используя named pools и которую было бы сложно или невозможно решить в модели Oracle" - wow! DO you really want to find a business tasks which could be implemented in one, and could not be in other??? Good luck. And thank you very much for the perfect explanation what is a resource manager and what is a summary table and how to use them :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 13:23 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
а может данные уже изменены, а я читаю устаревшие данные. это явно баг. Опять двадцать пять. Вы мой предыдущий пост читали? Если вы хотите гарантировано прочитать данные, которые никто не изменит, вы явно накладываете блокировку и все. Почему вы решили что эта возможность в Oracle отсутвует. А вот в других СУБД прочитать данные без блокировкок нельзя, кроме как не разрешив dirty read. Еще раз Неблокирующий селект не случайный побочный эффект а поставленная цель в достижении минимального наложения блокировок. Селект он предназначен для чтения, а не для блокирования. а может данные уже изменены, а я читаю устаревшие данные. это явно баг. Вообще то это азы теории транзакций и уровней изоляции данных при конкурентном доступе и это достаточно общая проблематика. При конкуренном доступе понятие устаревшие данные весьма размытое. При изоляции dirty read проблема устаревших данных отсутвует, но присутсвуют другие проблемы:). Non repetable read/Phantom Read позволяет видеть вам закомиченные данные после начала вашей транзакции - в Oracle это тоже. Serializable более высокий уровень изоляции, он существует и может использоваться если этого потребует логика приложения. Но используется он редко. Не понимаю почему вы зацепились за уровень с самой высокой изоляцией для аргументации по вашему мнению "бага". Это просто свойство уровня "repretable read/no phantom read". Можно попробовать направить в комитет по стандартам SQL bug report, что уровни repretable read/no phantom read это "баги" и их нужно исправить:) если б я реально писал те транзакции, я бы про блокировки даже и не вспомнил. Первое что должен сделать разработчик начав писать под другую СУБД, это ознакомиться с поддерживаемыми уровнями изоляции и механизмом блокировок. Если бы я так поступала, я бы тоже начав писать под DB2 спокойно без опасений использовала бы селекты не боясь заблокировать что либо. Последтсвия были бы еще более катострофические. Что действительно БАГ имхо, это неконсистентные результаты запроса в уровне изоляции READ COMMITTED, котоый вам очень наглядно описал vc123 vc123Under the default READ COMMITTED IL, SQL Server does not leave behind any locks -- as soon as the row is read, the lock is removed. This can lead to well-known anomalies with inconsistent aggregates or incorrect bank transfers However, any locking scheduler has a much nastier anomaly that allows incorrect aggegates (sum/avg/etc) in the Read Committed isolation for which there is no good cure at all. Например пернесенные средтва со счета на счет во время суммирования могут быть подсчитаны дважды. В Oracle такого быть не не может. Как я уже писала данные там консистетны на начало запроса. А говорить о том что а вот мол я смотрю отчет, а данные уже могли измениться, вообще бессмысленно. В рабочей базе изменения идут постоянно и во многих сеансах сразу, так что понятие актуальность данных в отчете весьма туманное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 13:41 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
авторэто тебе так кажется. если б я реально писал те транзакции, я бы про блокировки даже и не вспомнил. кажется :) но пользователи давольно быстро таким забывчивым напоминают ;) авторВы мне предлагаете последствия неправильного дизайна разбирать? ладно желаю удачи в оригинальных подходах, то что хотел я показал ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 13:45 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to gvv And thank you very much for the perfect explanation what is a resource manager and what is a summary table and how to use them :) То что я вам рассказываю про аналогичные фичи, это не попытка уличить или обвинить вас в незнании их, я просто привожу пример что подобные фичи тоже есть. Этим я просто хотела сказать что перечисленное это стандартные распостраненные механизмы а не уникальные фичи MQ. Так что прошу не принимать это привратно. wow! DO you really want to find a business tasks which could be implemented in one, and could not be in other??? Good luck. Похожего ответа я от вас и ожидала - просто передергивания. Я спросила конкретную вещь. Вы сказали что memory management в Oracle poor и что named buffers намногое эффективнее? Ведь на основе чего то вы сделали такое заключение? Какие задачи они (named buffers) вам позволили бы решить намного эффективнее. Иначе на чем основывается ваше утверждение? gvv"В Oracle это встроенная фича. С пом. profiles можно ограничить" - exactly. Oracle way is "All in one". IBM way is "A set of tools/utilities", if to say in short. Ранее gvvNewYear - as for me, IBM MUST supply MQSeries with DB2. Слишком обще. То что лучше - часть системы или external tool - зависит от конкретного случая. ИМХО, в случае profiles and resource manager лучше, если они реализованы в ядре самой СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:01 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
ViolinaНеблокирующий селект не случайный побочный эффект а поставленная цель в достижении минимального наложения блокировок. Нет, это как раз побочный эфект, цель любого планировщика транзакций сохранить целостность базы при выполнении серии паралельных транзакций, для чего предложена много разных механизмов самые известные из которых это блокирование и версионность ( механизм отметок времени с сохранением версий). Так вот неблокирующий селект это побочный эффект "версионной" части Oracle механизма concurency control. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:02 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Я и ёжик цель любого планировщика транзакций сохранить целостность базы при выполнении серии паралельных транзакций А при чем тут целостность базы? Селект не изменяет данных, почему селект должен заботиться о целостности базы? Это делается при кокурентном измении базы а не при чтении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:17 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Я и ёжик Так вот неблокирующий селект это побочный эффект "версионной" части Oracle механизма concurency control. А что же тогда по вашему есть цель "версионной" части Oracle механизма concurency control? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:21 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina: " не уникальные фичи MQ" - I did not tell about MQ features. I did not tell about any unique features at all. I just told that a set of IBM software allows ot make a system. Even if you think it is strange how a system could work where reader block writer. "Я спросила конкретную вещь." - sorry - from you point of view. From my it's absolutely abstract. And I'm not going even to try to answer on such question. "Ведь на основе чего то вы сделали такое заключение? Какие задачи они (named buffers) вам позволили бы решить намного эффективнее. Иначе на чем основывается ваше утверждение?" if I remember correctly, I said imho. I hop you know what it does mean. As for me, named bufferpools is much flexible. I agree for you it could be not the same. "Слишком обще. То что лучше - часть системы или external tool - зависит от конкретного случая. ИМХО, в случае profiles and resource manager лучше, если они реализованы в ядре самой СУБД." - exactly. It depends. Agreed. But as for me (again as for me) having MQSeries as a separate product allows me to use it _without_ DB2. What I did. That's the difference betwen having all in one, and a set of tools. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:24 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Привет 2 riman: спасибо за пояснение. Всего -- Andrei Kriushin (Oracle8/8i/9i OCP DBA), RDTEX J.S.C. Disclaimer: Opinions are of my own and not necessar(-il)y... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:27 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
>Слишком обще. То что лучше - часть системы или external tool - зависит от >конкретного случая. ИМХО, в случае profiles and resource manager лучше, >если они реализованы в ядре самой СУБД. не уверен. лучше, когда они реализованы в OS, как в OS/400. там вот так: любой файл я могу зажрналить, потол тогда любая IO операцию с файлом выполнять under commitment control. таким образом, когда выполняется транзакция, я в нее вовлекается любой ресурс, все, что пишется в файл. я могу omit не нужные объекты из транзакции. commit и rollback здесь - команды OS, а sql commit то же самое, что OS commit. выполнять транзакции можно в конкретной subsustem, и job queue. в subsustem можно выделить системные ресурсы, в job q можно играться в приоритетами транзакций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:28 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violinа >Селект не изменяет данных, почему селект должен заботиться о целостности >азы да не селект, транзакция, транзакция изменяет данный. нельзя рассматривать сетект вне транзакции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:30 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Example - we used to pass messages to the remote servers, and the result was changed ip filters and routing table on the remote server with returned confirmation (because sometime a route, for example, could not be added) - the example of independent MQSeries usage. The messages came asynchronously and fast. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:35 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to gvv if I remember correctly, I said imho. I hop you know what it does mean. Конечно знаю. И я задала конкретный вопрс. Почему ваше мнение таково? I agree for you it could be not the same. Сейчас я не могу высказать объективное мнение, у меня нет конкретных аргументов что Oracle memory management справится с этим лучше. У вас оно (мнение) есть. Значит есть аргументы, почему named pools лучше. Что плохого в желании узнать его причины? But as for me (again as for me) having MQSeries as a separate product allows me to use it _without_ DB2. Согласна и об этом уже писала ранее. to NewYear не уверен. лучше, когда они реализованы в OS, как в OS/400. И как OS будет разбираться во внутренних особенностях процессов БД, особенно если shared server configuration (несколько сессий обслуживаются одним процессом) при распределении ресурсов? commit и rollback здесь - команды OS, а sql commit то же самое, что OS commit. А может тогда и СУБД в OS перенесем:) То что вы описываете - журналируемая файловая система и конфигурация. Полезность таких OS или систем никто и не оспаривает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:44 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
ViolinaА при чем тут целостность базы? Селект не изменяет данных, почему селект должен заботиться о целостности базы? Это делается при кокурентном измении базы а не при чтении. Ну изменения данных обычно делается не из воздуха, а на основе произведенного чтения, нельзя чтение рассматривать вне контекста транзакции. В общем случае транзакция производит чтение, делает некий анализ, на основе которого формирует данные для записи. Только читающая транзакция вырожденный случай, но и здесь шедулер должен позаботится о целостности полученных данных, т.е наша транзакция только читает, но она ведь не одна в базе? ViolinaА что же тогда по вашему есть цель "версионной" части Oracle механизма concurency control? Во первых я бы не рассматривал отдельно "версионную" сторону механизма concurency control, всё таки это единый механизм и цель любого такого механизма это поддержание целостности данных в условиях наличия конкурирующих транзакций, с подцелью обеспечения максимальной пропускной способности. Если всё таки попытаться разделить, то версионная часть в большей степени отвечает именно за поддержание целостности, а блокировочный механизм предназначен для предотвращения конфликтов на более ранней стадии ( дешевле приостановить транзакцию, чем потом её откатывать). Кроме того блокировочный механизм служит для искуственной "сериализации транзакций" когда версионный механизм Oracle с ней не справляется ( write skew, и.т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:44 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
>И как OS будет разбираться во внутренних особенностях процессов БД процессы БД и процессы OS это одно и то же >А может тогда и СУБД в OS перенесем а так и есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:47 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Вчера поставил Oracle8/8i под впечатлением топика. Ну что вам сказать? Я потрясен! Красота да и только, Как они всё это сделали? В DB2 такого точно нет. А база как выглядит....мммм. ... эт сетра. Всё вышеперечисленное про интерфейс . Надо же иногда обстановку разряжать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:48 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to NewYear авторда не селект, транзакция, транзакция изменяет данный. Нельзя рассматривать сетект вне транзакции Какие данные изменяются здесь? Код: plaintext 1. 2. PS В Oracle также есть еще уровень изоляции READ ONLY = serializable read only. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:48 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to riman Всё вышеперечисленное про интерфейс Совершенно согласна. В свое время я тоже возмущалась что как можно так мало внимания и усердия выделять тому, что является ИМХО визитной карточкой продукта. Но Oracle считает это малоприоритетным. Слышала что эти явавские GUI тулзы пишут в Индии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:53 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
это частный случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:55 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Я и ёжик В общем случае транзакция производит чтение, делает некий анализ, на основе которого формирует данные для записи. Это уже из области выбора оптимистической или пессимистической блокировок. В других СУБД для экономии ресурсов при выборке часто делают сразу commit Код: plaintext 1. Так что приходим к такому же эффекту, выбранные данные могут быть изменены кем то другим. авторТолько читающая транзакция вырожденный случай, но и здесь шедулер должен позаботится о целостности полученных данных позаботится о целостности полученных данных позволяет версионированние. , т.е наша транзакция только читает, но она ведь не одна в базе? Не одна, но она ничего не изменяет. Заботятся о наложении нужных блокировок те транзакции которые данные изменяют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:59 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina. Вы меня постоянно неправильно понимаете. Я наоборот восхищался Оракловыми ГУЯми, потому что IBM приоритет на ГУИ поставила ещё меньше, чем Оракл. Впрочем ГУИ меня мало интересуют, мне и консоли хватает. зы. DB2-ники, не пользуйтесь ГУЯми от IBM - багов в ней куча. Постоянно подправлять приходится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 15:02 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
авторВчера поставил Oracle8/8i под впечатлением топика а почему не 7ку ? она постарше (солидней ) :) на самом деле уже у 9ки нормальный интерфейс, но жуууутко тормозной, зато наконец в 10ке догадались вебный. гораздо удобней, а главное на порядок навароченей микрософтовского (с дб2 сравнить не могу не видел) так-что наезды на интерфейс уже пару лет не актуальны ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 15:02 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to NewYaer Опять вы предодностие все так, как будто в Oracle невозможно предварительно выбрать данные на редактирование. Как я уже писала такая возможность есть. Рассматривайте неблокирующее чтение тогда как возможность например сгенерить отчет не мешая блокировками другим сеансам, если вам так удобнее. В некоторых СУБД это делается с помощью dirty read, в Oracle с пом. версионирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 15:03 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to riman Violina. Вы меня постоянно неправильно понимаете. А я увидела иронию:) Наверное потому что философии у нас разные. to all Для разрядки обстановки. Еще раз повторюсь что не ставила целью "показать" что Oracle rulez или типа этого. Мне интересны особенности, плюсы и минусы тех или иных подходов в сравнении с DB2 и примеры, о чем я задаю вопросы. Не рассматривайте такие вопросы как наезд - в штыки. Пока что более или менее дускуссия удается. За других я отвечать не могу, просто хочу попросить не надо провокаций. А то скатимся как в сравнении СУБД - База X рулит, база Y ацтой ... наезды и оскорбления - потом примирительное: все базы хороши выбирай на вкус - потом философское: базы они не плохие или хорошие, они другие ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 15:11 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Дорогая Violina. После ответа Gt я понял - то что ораклисты называют разной философией, DB2-ники назовут предвзятостью :Р. DB2 - рулез форева. Выньдос - мастдай. Про Оракл потом - когда "они" уйдут ;))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 15:18 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
"Мне интересны особенности, плюсы и минусы тех или иных подходов в сравнении с DB2" - I'd say it's too narrow. For me at leats. I don't need a database itself. As for me it's a part of a system. Probably it's possible to make a whole system out of Oracle only. But definitelly for me it is not to have DB2 only to make a system. And keeping in mind the difference between Oracle and IBM policy I would not compare database only. But it's imho, as a system architect. I understand DBAs could, probably, compare databases. Aboutt pools in oralce - imho three pools is not enough, and an ability to have a dedicated pool for an index or a table, or a group of indexes or a group of tables seems for me to be more flexible. Sometime I calculate exactly what part of a table I want to keep in a pool, knowing how many concurrent transaction I have, and how many rows they need to access. It's like with C pointers - the humanity divided on thwo parts - who understand a concept of pointers, and who do not. Let say I do not understand a concept of oracle pools, that's why I prefer dedicated pools for tables/indexes. I just from another part of humanity. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 15:29 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
It's like - I want to be alone in a queue for irish stout, and you want to be alone too :) (additions about pools) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 15:34 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina Это уже из области выбора оптимистической или пессимистической блокировок. А если вообще нет блокировок, из какой области это будет? Чистый версионный механизм не требует блокировок вообще. Посмотрите например главу об управлении паралельными заданиями в книжке: Гектор Гарсиа-Молина. Джеффри Ульман и Дженнифер Уидом "Системы баз данных. Полный курс", у них описан версионный механизм без применения блокировок. ViolinaВ других СУБД для экономии ресурсов при выборке часто делают сразу commit Это их проблемы. Компромис между целостностью, надежностью и скоростью. По большоиму счету транзакция должна быть едина и неделима и должен иметь место и жизнь только один уровень изолированности транзакций - "serializable" всё остальное компромисы, и не важно каким механизмом он реализован, но к сожалению во всех существующих шедулерах он достается большой ценой. Violinaпозаботится о целостности полученных данных позволяет версионированние. О том и речь, планировщик заданий на основе механизма версионирования. А еще об этом моог бы позаботится планировщик на основе блокировок, или механизм валидации транзакций, ила планировщик на основе временных штампов или и.т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 15:40 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to gvv I'd say it's too narrow. For me at leats. I don't need a database itself. As for me it's a part of a system. But definitelly for me it is not to have DB2 only to make a system. I understand DBAs could, probably, compare databases. То что IBM предоставляет целый спектр продуктов а не только базу я в курсе. Замахиваться шире слишком ... - слишком уж обширно. Это все равно что сравнивать Oracle Database versus MS SQL plus operation system Windows. Ограничусь все таки соспостовлением БД. Про пулы, спасибо за примеры и удачную аналогию:) It's like with C pointers - the humanity divided on thwo parts - who understand a concept of pointers, and who do not. Let say I do not understand a concept of oracle pools, that's why I prefer dedicated pools for tables/indexes. I just from another part of humanity. Здесь тоже соглашусь. Указатели часто ругали за то, что используя их можно натворить много бед, множественное наследование за возникновение парадоксов. А кому то предпочтительнее ручное управление выделением и осовобождением памяти. Но ИМХО не стоит запрещать или критиковать что-то только за то, что кто нибудь неумелый может изспользовать это неправильно и нанести вред. Sometime I calculate exactly what part of a table I want to keep in a pool, knowing how many concurrent transaction I have , and how many rows they need to access. А how many concurrent transaction выставляется на уровне пула? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 15:52 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Я и ёжик Чистый версионный механизм не требует блокировок вообще. Я приводила гипотетический пример здесь Оракл не 100% версионник. В 100% версионнике можно было бы действительно работать со своей версией данных сколь угодно без учета что происходит "снаружи" а о сюпризах узнавать только при коммите. Но такая реализация имеет интерес чисто теоретический. Так что сюрпризы из-за одновременного изменяющего доступа в одной и той же строке не откладываются до коммита а проявляются немендленно при возникновении конфликта. По большоиму счету транзакция должна быть едина и неделима и должен иметь место и жизнь только один уровень изолированности транзакций - "serializable" всё остальное компромисы Тогда бы базы были точно похожи:) Возможно каждая отличалась бы тем, на каком этапе юзер должен был конфронтировать с сюрпризами из за невозможности сериализации. Длинные транзакции были бы вообще немыслисмы. всё остальное компромисы Ну так мы придем опять к филосовской проблеме - одновременный доступ и целостность данных. Еще раз подчеркну, ведь в Oracle не отсутсвует такая возможность - предварительно заблокировать данные на редактирование. И есть возможность прочитать данные не блокируя и получить консистентный результат благодаря версионированию. О том и речь, планировщик заданий на основе механизма версионирования. А еще об этом моог бы позаботится планировщик на основе блокировок, или механизм валидации транзакций, ила планировщик на основе временных штампов или и.т.д. Мог бы и каждый со своими последствиями и выигрышами. Каждая СУБД выбрала свой метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 16:03 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to riman (для разгрузки) Ну и активность у вас на форуме. Я уже успела набрать 1.92% от форума DB2. В Oracle у меня 3.32% - прям TPC-C какой-то. Если так дальше пойдет, то глядишь спецом по DB2 стану ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 16:15 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Вот так и догоняет DB2 Oracle - короткими шагами, покрывая большие дистанции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 16:22 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
ViolinaЕще раз подчеркну, ведь в Oracle не отсутсвует такая возможность - предварительно заблокировать данные на редактирование. Не может быть!!! :) ViolinaТогда бы базы были точно похожи:) И это было бы правильно и хорошо. Юзеру наплевать каким образом и за счет чего достигнута сериализация, он только знает, что НИКАКИЕ его действия не приведут к рассогласованию данных ( если отдельная транзакция сама по себе верна). ViolinaВозможно каждая отличалась бы тем, на каком этапе юзер должен был конфронтировать с сюрпризами из за невозможности сериализации. Невозможности сериализации не бывает, она может достаться слишком дорогой ценой. ViolinaДлинные транзакции были бы вообще немыслисмы. С чего такой вывод? ViolinaНу так мы придем опять к филосовской проблеме - одновременный доступ и целостность данных. Это не филосовская проблема , а вполне техническая, и книжки по этому поводу пишут не филосовские, а тоже вполне техничиские. И это как раз и есть одна из важнейших задач которую должна выполнять СУБД ViolinaМог бы и каждый со своими последствиями и выигрышами. Каждая СУБД выбрала свой метод. Всё точно и правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 16:30 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to riman Вот так и догоняет DB2 Oracle Из за использования английских слов не понятны падежы. В общем интерпретация на усмотрение читающего:) А вообще хорошо, что есть несколько достойных СУБД, они вон конкурируют друг с другом, развиваются, на TPC пытаются друг друга скинуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 16:35 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina: /topic/89347 But Aion doubts the DB2 is the central point of the system. But it is - it's a single storage. Just used in a non-standard way. I always wonder why people having many radius servers world-wide are trying to use a _direct_ access to a single database for AAA.... It has no reason. It has disadvantages only... I don't like to have several replicated servers in a such environment, one for each radius location either. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 16:41 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Я и ёжик Не может быть!!! :) И вы туда же? Я это сказала не потому что якобы вы это не знаете. А подчеркнуть то, что эта возможность есть и есть дополнительная возможность выполнить select без блокировок. См. также аналогию с указателями - не стоить запрещать некую фичу только потому, что кто то может принести вред используя ее не по назначению. Невозможности сериализации не бывает, она может достаться слишком дорогой ценой. Для всех одновременных транзакций нет, если они "сцепились" за одни и теже данные. Кто то должен обломаться, иначе - потерянные изменения или строго последовательные изменения с ожиданиями. автородновременный доступ и целостность данных. Это не филосовская проблема Философская я имела в виду в смысле неразрешимая в такой категорической постановке как ваша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 16:44 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
ViolinaИ вы туда же? Я это сказала не потому что якобы вы это не знаете.А подчеркнуть то, что эта возможность есть и есть дополнительная возможность выполнить select без блокировок. Sorry, не хотел обидеть. Я просто хочу вернуться к тому с чего начал, на мой взгляд это не "возможности" всмысли фичи :) , а просто побочные эффекты используемого механизма concurency control, которые естественно можно использовать в своих целях. ViolinaДля всех одновременных транзакций нет, если они "сцепились" за одни и теже данные. Кто то должен обломаться, иначе - потерянные изменения или строго последовательные изменения с ожиданиями. Такова "се ля ви" кто то обламывается, кто то ждёт. ViolinaФилософская я имела в виду в смысле неразрешимая в такой категорической постановке как ваша. Почему такое неверие в людей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:06 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
That's not quite correct: <quote> О том и речь, планировщик заданий на основе механизма версионирования. А еще об этом моог бы позаботится планировщик на основе блокировок, или механизм валидации транзакций, ила планировщик на основе временных штампов или и.т.д. </quote> The scheduler is _not_ based on MVCC. There are two basic kinds of schedulers: Locking: o Strict two phase locking (2PL) (DB2/Sybase and friends); Non-locking: o Timestamp ordering (TO) o Serialization graph testing (SGT) None of the two non-locking schedulers requires multiversioning. Now, MVCC can be based on SGT or on TO or on 2PL. Oracle is a mixed scheduler based on 2PL for updaters and TO for queries with multiversion concurrency control. VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:11 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
To: Я и ёжик <quote> Я просто хочу вернуться к тому с чего начал, на мой взгляд это не "возможности" всмысли фичи :) , а просто побочные эффекты используемого механизма concurency control, которые естественно можно использовать в своих целях. </quote> This is not true at all. Multiversion concurrency control is not a 'side effect' as you claim, but an intentional design decision made to improve concurrency. There is no need to use MVCC with any of the two kind of schedulers I briefly mentioned in my previous message. By the way, no offence meant -- just trying to clarify the issue. VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:15 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2 vc123 как ты и говорил. rollback не работает. ---------------------------------------- chgcurlib alex strsql create table test ( int int) // табличка Table TEST in ALEX created but could not be journaled. crtjrnrcv jrnrcv(rcvr) crtjrn jrn(jrn) jrnrcv(rcvr) //журнал strjrnpf file(*curlib/test) jrn(*curlib/jrn) images(*after) strcmtctl lcklvl(*all) // запустил commitment control с изоляцией *ALL (RR) strsql insert into test values (1) 1 rows inserted in TEST in ALEX. select * from test INT 1 rollback Rollback completed. select * from test INT 1 -------------------------------------------------------- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:18 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina Spl>В этом смысле у DB2 и Оракл просто разные сегменты рынка. Не поняла аргумент? Что дейсвительно настолько разные? Ну исходя из статистики: user commits: 260000 user rollbacks: 1800 shutdown abort тоже бывает очень редко, точнее в исключительных случаях. на рабочем сервере мне как бы не особо нужен rbs - здесь больше реализация db2 одошла бы. Хотя есть и аргументы за присутствие rbs, причем более весомые для нас: 1. нет блокировок чтения 2. чуть большая надежность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:22 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
To: NewYear, <quote> как ты и говорил. rollback не работает </quote> Well, it's sort of obvious, isn't it ;) VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:24 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
интересно, можно писать вообще без rollback-ов? тогда можно место на логах сэкономить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:25 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to gvv I always wonder why people having many radius servers world-wide are trying to use a _direct_ access to a single database for AAA.... It has no reason. It has disadvantages only... I don\'t like to have several replicated servers in a such environment, one for each radius location either. Ну это вы взяли крайние случаи реализации системы. Конкретнее сказать ничего не могу, возможно. gvv>И сама база, используеться как и для OLTP (теже CDR) так и для BI? Как вообще со временем отклика? >Или у Вас жесткое разограничение? And OLTP, and DSS. DSS is for now just a set of predefined stat reports and invoice issuing. MDC tables are in use. One more - the funny shit happens when a salesman tells "Wow, shit, I have forgoten to change the prices!!!" - and we have to recalculate existing calls. Sometime cisco people do their \'experiments\' with buggy IOS - and again we have to recalculate existing calls, and not only recalculate, but can be even worse... The shit happens, and the system has to be designed to handle it. Both of them calculated when a leg come to the system. По этому поводу я уже высказывалась. Обычный метод применения summary tables (materialized views) в вашем случае MDC tables для разгрузки "горячих" таблиц со соответсующими соображениями - тратить ресурсы на их постоянное поддержание uptodate или позволить delay. PS Можно было тогда дать эту ссылку на мои вопросы вместо - It\'s not first time I see oracle dba think there are no any other rdbms except their favorite. Gt. как привел ссылку на проблематику, а ваша была бы примером как она решается. to Я и ежик Почему такое неверие в людей? см. вашу предыдущую фразу:) Такова "се ля ви" кто то обламывается, кто то ждёт. Именно поэтому. ИМХО такие крайности не всегда приемлемы, их стоит использовать только если это действительно требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:26 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
A correction to my response to the claim that the non-blocking select is somehow a side effect of MVCC. This: "This is not true at all. Multiversion concurrency control is not a 'side effect' as you claim, but an intentional design decision made to improve concurrency. There is no need to use MVCC with any of the two kind of schedulers I briefly mentioned in my previous message. " shoud read: "This is not true at all. The non-blocking select is not a 'side effect' as you claim, but an intentional design decision made to improve concurrency. There is no need to use MVCC with any of the two kind of schedulers I briefly mentioned in my previous message. " VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:33 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
vc123 That's not quite correct Согласен, толко я бы не выделял MVCC как нечто отдельное от шедулера, это непосредственная часть возможного механизма. И говорить " Oracle is a mixed scheduler based on 2PL for updaters and TO for queries with multiversion concurrency control.", в смысле разделения механизма concurency control на часть для update и часть для query мне кажется можно только достаточно условно. vc123 Multiversion concurrency control is not a 'side effect' as you claim, but an intentional design decision made to improve concurrency. Может я неправильно перевожу, но я не говорил , что Multiversion concurrency control это побочный эфект, я как раз говорил что не блокирующее чтение это побочный эффект Multiversion concurrency control. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:33 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to vc123 This is not true at all. Multiversion concurrency control is not a 'side effect' as you claim, but an intentional design decision made to improve concurrency. Именно, иначе зачем вообще тогда мультиверсионирование. Правда сейчас нашли им и другое применение - flashback queries и recycle bin:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:36 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina Именно поэтому. ИМХО такие крайности не всегда приемлемы, их стоит использовать только если это действительно требуется. Крайности во многом от того, что большинство обсуждаемых механизмов, предотвращают не только реальные , но и потенциальные конфликты, дуют на молоко... Но я бы не стал утверждать, что невозможно придумать более эффективного механизма. А потом вычислительные системы пока развиваются быстрее , чем обслуживаемый ими бизнес, поэтому в думается в скором времени, для многих систем даже выстраивание в последовательную очередь транзакций, не будет проблемой, чем не решение :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:42 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Я и ёжик Может я неправильно перевожу, но я не говорил , что Multiversion concurrency control это побочный эфект, я как раз говорил что не блокирующее чтение это побочный эффект Multiversion concurrency control. Не блокирующее чтение и есть improved concurrency provided by multiversion concurrency control. Или вы видете improved concurrency в чём то другом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:42 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
поэтому в думается в скором времени, для многих систем даже выстраивание в последовательную очередь транзакций, не будет проблемой, чем не решение :) Вы оптимист? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:43 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
OK, let nit pick a little bit more. <quote> Согласен, толко я бы не выделял MVCC как нечто отдельное от шедулера, это непосредственная часть возможного механизма. </quote> As I said before, MVCC is not a scheduler by itself, it's an enhancement of the specific type of scheduler and as such is not an integral part thereof. <quote> И говорить " Oracle is a mixed scheduler based on 2PL for updaters and TO for queries with multiversion concurrency control.", в смысле разделения механизма concurency control на часть для update и часть для query мне кажется можно только достаточно условно </quote> It's not an opinion, it's a fact ;) 'updaters' and 'queries' are traditional terms in the transaction management jargon; to clarify, the updater means the 'write' part of an update statement if you will. Anyway, I am curious as to what your objection is to the Oracle characterization as a mixed multiversion 2PL/TO scheduler. VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:45 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2Ораклоиды. С какой версии эти хинты появились? И redo-журналы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:46 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to riman C какой не знаю, но вот может будет истересна история. Возможно это 1993 Oracle7 with cost-based optimizer -------------------------------------------------------- 1979 Oracle Release 2—the first commercially available relational database to use SQL 1983 Single code base for Oracle across multiple platforms 1984 Portable toolset 1986 Client/server Oracle relational database 1987 CASE and 4GL toolset 1988 Oracle Financial Applications built on relational database 1989 Oracle6 1991 Oracle Parallel Server on massively parallel platforms 1993 Oracle7 with cost-based optimizer 1994 Oracle Version 7.1 generally available: parallel operations including query, load, and create index 1996 Universal database with extended SQL via cartridges, thin client, and application server 1997 Oracle8 generally available: including object-relational and Very Large Database (VLDB) features 1999 Oracle8i generally available: Java Virtual Machine (JVM) in the database 2000 Oracle9i Application Server generally available: Oracle tools integrated in middle tier 2001 Oracle9i Database Server generally available: Real Application Clusters; OLAP and data mining API in the database 2003 Oracle Database 10g enables grid computing and simplifies and automates key management tasks ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:53 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina: MDC table != summary table. They are absolutelly different.Multi-Dimensional Cluster table. Now we are adding Range Clustered tables. BTW I don't ask about something similar in Oracle. Probably similar effect could be reached absolutelly differently. "Ну это вы взяли крайние случаи реализации системы" - exactly. The 'truth' is betwen them. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:53 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to gvv BTW I don't ask about something similar in Oracle. ОК, рассказывать не буду:) Прочитала про Range Clustered tables http://publib.boulder.ibm.com/infocenter/db2help/index.jsp?topic=/com.ibm.db2.udb.doc/admin/c0011068.htm Probably similar effect could be reached absolutelly differently. скажу только что есть аналогичные структуры и эффект достигается тем же путем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 18:00 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2 ggv ggv But Aion doubts the DB2 is the central point of the system. But it is - it's a single storage. Just used in a non-standard way. I always wonder why people having many radius servers world-wide are trying to use a _direct_ access to a single database for AAA.... It has no reason. It has disadvantages only... I don't like to have several replicated servers in a such environment, one for each radius location either. Хмм.. Конечно doubt :-) , и DB2 - меня интересовало именно как storage т.е. как database, а не solution. Как понимаете, может быть не только real-time for companies, но и pre-paid cards и post-time system.... 2 Violina Violina Ну это вы взяли крайние случаи реализации системы. Конкретнее сказать ничего не могу, возможно. Согласен, здесь очень специфичный случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 18:06 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
vc123 I am curious as to what your objection is to the Oracle characterization as a mixed multiversion 2PL/TO scheduler. Моё objection не простиралось столь глубоко.:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 18:15 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
авторНе блокирующее чтение и есть improved concurrency provided by multiversion concurrency control. Или вы видете improved concurrency в чём то другом? В одних случаях improved, в других случаях не improved, если бы был единственно верной механизм который всегда improved, наверное ведь других бы и не прдлагали? ViolinaВы оптимист? А как же, завтраж карнавал :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 18:25 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Anion - you see, for us pre-paid is just a module, post-paid is just a module, and a whole VoIP is just a module (but big and important) also. I never said that our radius servers do AAA from something different than DB2. They use DB2, but not directly, they just don't have a direct access to a database. That's why I see a reason to supply DB2 together with MQSeries. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 19:04 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
And DB2 is a single storage for, probably, everything. Including, for example, DNS zones. But bind has an access to zones over LDAP protocol. IBM LDAP server. And when a zone changed we have a trigger fired (becuase IBM LDAP use DB2 as a storage). Trigger sends a message to a queue. And somewhere far away we got a result - bind reloaded zones info. It's just a short and a simple example of what I mean 'system'. I told even more than you need to get an idea. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 19:13 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
ggvThey use DB2, but not directly, they just don't have a direct access to a database. That's why I see a reason to supply DB2 together with MQSeries. Да,да я понимаю :-) Ну только в чем разница (если отбросить именно solutions), что 100K cообщений, как пример, будут читаться из очереди & обрабатываться process'om, который (процесс) будет напрямую :-) работать с базой....для базы данных (разница всмысле). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 19:29 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Anion: I am not sure I got the question. So one more time. 1) Distributed system; 2) Event-driven system; 3) A single central storage for insert/update/delete information; 4) Several remote 'devices' on different channels (including not relibalie or 'thin'); 5) 'Device' has 'write' buffer and 'read' buffer; 6) Write buffer is just a queue with the central storage on the remote end; 5) Read buffer is any kind of local storage controlled (updated) by the central storage over a queue, the local storage could be anything, including plain text file. The kind of local storage depends from the type of the 'device'. Anion: what could be simpler? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 20:22 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
авторAs I said before, MVCC is not a scheduler by itself, it's an enhancement of the specific type of scheduler and as such is not an integral part thereof. "Уберите пилу я всё поняла..." :) Да, я пожалуй слишком привык рассматривать его как часть единого механизма. Убедили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 21:12 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Nikolay Kulikov or anybody who can answer авторCмотрим и анализируем отчеты TPC-C места 5,6 Oracle 8-hour log (GB) 1,743.58 И это только REDO logs. DB2 8 Hour Log (GB) 801.79 А где найти эти отчеты на www.tpc.org? Там только таблицы сравнения и pdf документы. В них расценки и описание hardware. А где сами то отчеты? Я не нашел:-( Они только для мемберов доступны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2004, 15:35 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to New Year >И как OS будет разбираться во внутренних особенностях процессов БД процессы БД и процессы OS это одно и то же Не всегда одно и тоже. Не знаю как в DB2 (наверняка тоже есть), но в Oracle есть вариант конфигурации shared server. В этом случае один процесс может обслуживать несколько сессий. Как в таком случае распределять CPU ресурсы среди сессий на уровне OS? Кроме того в Windows часто "процессы" это threads одного "натоящего" процесса, потому что реалезиация с пом. нескольких настоящих процессов, общающихся через Interprocess Communication, не всегда обеспечивает нужную производительность, плюс проблемы доступа к общей памяти разными процессами. Как в таком случае распределять CPU ресурсы среди сессий на уровне OS? Или поскольку Windows must die, на него можно забить? В общем моё предположение, что управление распределнием CPU ресурсов для сессий на уровне OS не всегда обеспечивает нужную гибкость и гранулярность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 09:44 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Bиолина, я это сказал про OS/400. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 10:22 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to NewYear ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 10:44 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2Graf f: pdf-ка называется full disclosure report. В ней все это есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 11:05 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
> Или поскольку Windows must die, на него можно забить? в Windows нужен координатор, наверно. через TXSeries я 50 транзакций запускал одновременно, как-то они работали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 11:08 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
NewYear - just in case you know, is there TXSeries trial edition? Could not find it. Guess is not. As well as a lot of other useful IBM software. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 11:52 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
вот уж не знаю... кстати, в пятой версии TXSeries, похоже, бага. мне так и не удалось связать TXSerie 5 и MQ, region не стартовал из-за XA Resource. c 4 все заработало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 12:09 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
vc123: Ваши поправления сподвигли меня поднять архивы и почитать на выходных как-же работает DB2 в плане журналирования, за что вам отдельное спасибо. В DB2 как таковых явных UNDO данных нет. Все записи идут как REDO записи в том числе и записи откатов. Откаты записываются как СLR (Compensated Log Records) которые в обратном порядка перезаписывают измененные данные. Фактически на уровне журнала откат выглядит как "компенсирующая транзакция". Нашел в архивах ссылку на описание на интересно ARIES-RRH , читайте кому интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 17:09 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
To: Nikolay Kulikov Unfortunately, you are confused a little bit. 1. When DB2 updates a page, it creates an update record in the transaction log. The record contains redo _and_ undo information. 2. The CLR record contains redo information only for partial or complete rollbacks. In other words, when a rollback is performed, the previous change is undone (using the information from the undo part of the update record) and a CLR record is created containing only redo. The CLR record, therefore, cannot be used for rollbacks -- it's just additional redo for partial or complete rollbacks. Strictly speaking, the CLR record is not required for recovery. It's used to enhance/improve recovery in the following ways: o In the case of repeated crashes, the amount of logging is limited because DB2 does not need to undo what's already undone; o makes possible nested top actions (B+ page split, etc.). In short, DB2's redo/undo parts of the update record are logically equivalent to Oracle'a (and other DBs) redo/undo. VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2004, 06:06 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Долго курил документацию http://publib.boulder.ibm.com/infocenter/db2help/topic/com.ibm.db2.udb.doc/admin/r0001910.htm#HDRLOGHDR%5D%7C>]http://publib.boulder.ibm.com/infocenter/db2help/topic/com.ibm.db2.udb.doc/admin/r0001910.htm#HDRLOGHDR]|> http://publib.boulder.ibm.com/infocenter/db2help/topic/com.ibm.db2.udb.doc/admin/r0001910.htm#HDRLOGHDR" TARGET="_blank">документацию и Мохана и форум. Понял в чем же я тупил. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2004, 17:37 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Нам нужны тесты. Достаточно простые, чтобы их легко было устанавливать на сервера и проводить, а также портировать на другие базы данных, и в то же время похожие на реальные приложения. Что-то типа такого: http://www.pcmag.com/article2/0,1759,4178,00.asp Правда, приведенный именно по этой ссылке тест нехорош. Во-первых, к download'у предлагается неполный комплект, отсутствуют: * application server * тестовые данные * клиентская часть (которая делает запросы к application server) то есть вы не можете, выкачав тест и тут же его установить и прогнать. Во-вторых, плохо написан. По крайней мере, с точки зрения Oracle - используется прямая подстановка параметров вместо биндинга, что есть смертный грех, как утверждает Кайт. В тесте отсутствует также поиск заголовков книг и имен авторов по шаблону, а есть только по строгому равенству (что глупо для веб-магазина с миллионами названий книг). В-третьих, запросы слишком просты и потому с точки зрения сравнения оптимизаторов неинтересны. Но как отправная точка тест может быть интересен. Данные можно сгенерировать, тест-приложение - модифицировать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 14:50 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
ViolinaСразу оговорюсь, что вопросы несколько поверхностные и утрированные. Я с DB2 совершенно не знакома, так что рассматривайте мой постинг как спортивный интерес новичка. Пообщалась тут недавно с DB2-шником, который проявил интерес к Oracle. Я ему пару интересных штук по Oracle рассказала, он мне про DB2. Его впечатлила реализация механизма блокировок в Oracle, а меня механизм разбора и оптимизации SQL выражений в DB2. В частности, что в DB2 хинты отсутсвуют как класс. Факт, то что в Oracle производительность запроса можно увеличить в несколько раз с пом. хинтов, он считает вовсе не крутизной, а скорее кривизной. Вот его примерные слова: "В DB2 не важно как ты напишешь запрос. Запросы оптимайзер преобразует в некий граф с оценкой по статистики, которая всегда поддерживается в актуальном состоянии, что позволяет выбрать оптимальный план. Таким образом в шаманстве по переписыванию запросов в их более оптимальные эквиваленты попросту нет необходимости. Нужно просто написать запрос на выборку нужных данных, а отимайзер преобразует его в оптимальный внутренний эквивалент." Нечто вроде Код: plaintext 1. 2. С моей стороны аргумент был, что разработчик иногда имеет больше информации, или она недоступна оптимайзеру, как лучше выбирать данные, и может указать на это с пом. хинтов. Контраргументом был вопрос, как разработчик может знать состояние данных лучше, чем оптимайзер, если статистика всегда актуальна? Итак, мои вопросы: 1) Буду признательна за интересные ссылки по механизму работы оптимайзера DB2 (только пожалуйста не на углубленную доскональную документацию). 2) Поделитесь впечатлениями по написанию SQL запросов. Дейсвительно вам совсем не приходится переписывать запросы? 3) Бывает ли такое, что оптимайзер заклинивает, и он упорно использует далеко не самый оптимальный план? 4) Слышала, что влиять на оптимайзер, можно с помощью правки статистики напрямую вручную (в Oracle есть нечто похожее optimizer_index_cost_adj). В принципе это тогда почти что тоже самое, что и хинты. to NewYear Рассчитываю на ваше участие:)Я тоже слышал, что DB2 быстрее Oracle работает, но не могу найти ссылку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:07 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
"Смотрите на видео " : Восставшие из АДА 2008 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:14 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
mitek"Смотрите на видео " : Восставшие из АДА 2008 Ну, тем не менее, сухой остаток: хинты в db2 есть, и гораздо более неудобные, чем в Oracle. Это, наверное, и правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 16:57 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Author the new oneНу, тем не менее, сухой остаток: хинты в db2 есть, и гораздо более неудобные, чем в Oracle. Это, наверное, и правильно.В db2, начиная с v8.2.2 появились OPTIMIZATION PROFILES . По-моему, они гораздо удобнее, т.к. не надо код трогать. Оно единствено где неудобно может быть, так это если приложение динамически запрос строит. Но вот конструирование динамически запроса вместе с хинтом - это уже слишком высокое искусство программирования ИМХО... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 17:53 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein Author the new oneНу, тем не менее, сухой остаток: хинты в db2 есть, и гораздо более неудобные, чем в Oracle. Это, наверное, и правильно.В db2, начиная с v8.2.2 появились OPTIMIZATION PROFILES . По-моему, они гораздо удобнее, т.к. не надо код трогать. Это как раз феерически неудобно: запрос в одном месте, хинты в другом, вот так вот просто не поправишь, и почему некий запрос работает так, а не эдак неочевидно совершенно. Это, как мне кажется, правильно: расстановка хинтов - дело не очень хорошее, и как всякое нехорошее дело должно требовать дополнительный усилий и быть максимально неудобным. В оракле хинты расставляются очень легко и удобно, что провоцирует не разбираться, а по-быстрому указать хинт и не морочить себе голову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2008, 22:24 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Optimization profiles - аналог не только хинтов, но и stored outlines. Что касается величины неудобства, то я согласен. (Все мои программы используют CLI и многие запросы строят динамически). Что касается того, что это хорошо... это вряд ли. Вот не было хинтов совсем (за исключением optimize for N rows) - тогда и правда было хорошо, можно было развести руками и сказать - "ничего сделать не могу" (шутка; всегда можно что-то сделать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2008, 22:54 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Author the new oneЭто как раз феерически неудобно: запрос в одном месте, хинты в другом, вот так вот просто не поправишьЗапрос пишется 1 раз по-хорошему и больше не переписывается, иначе вам пользователям вашей программы придется предоставлять исходники или еще как-нибудь давать возможность править ваши запросы. А это - большое зло. Оптимизационные профили именно вот так просто и можно поправить, не трогая код - а это серьёзное преимущество при эксплуатации. Author the new one, и почему некий запрос работает так, а не эдак неочевидно совершенно.Не понял. К хинтам это какое отношение имеет? Author the new oneЭто, как мне кажется, правильно: расстановка хинтов - дело не очень хорошее, и как всякое нехорошее дело должно требовать дополнительный усилий и быть максимально неудобным.Иногда без этого не обойтись, либо весьма трудно обойтись. Author the new oneВ оракле хинты расставляются очень легко и удобно, что провоцирует не разбираться, а по-быстрому указать хинт и не морочить себе голову.Согласен, что для разработчика - очень удобно. А при эксплуатации - очень неудобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 11:01 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein Author the new oneЭто как раз феерически неудобно: запрос в одном месте, хинты в другом, вот так вот просто не поправишьЗапрос пишется 1 раз по-хорошему и больше не переписывается, иначе вам пользователям вашей программы придется предоставлять исходники или еще как-нибудь давать возможность править ваши запросы. А это - большое зло. Оптимизационные профили именно вот так просто и можно поправить, не трогая код - а это серьёзное преимущество при эксплуатации. Ну, начнем с того, что я и писатель, и пользователь в одном лице, так что для меня это, например, не критично. Во-вторых, основная причина профилей, как мне кажется - нежелание разработчиков вносить всякие штуки-бяки в парсер, и потом их годами поддерживать. Идеальной - раз уж мы связались с хинтами - была бы фича сервера "давай мне запрос, возможно, с твоими хинтами, я тебе сейчас отдам такой же, но расхинтованный во всех подробностях, как я его буду делать, с учетом твоих хинтов, если они есть". Такой функционал, насколько мне известно, не реализован ни в одном сервере. Author the new one, и почему некий запрос работает так, а не эдак неочевидно совершенно.Не понял. К хинтам это какое отношение имеет? Непосредственное. Вы смотрите на запрос, который ведет себя странно, делаете ему индекс, то-се, а он чхать на него хотел с прибором. Через два часа выясняется, что для него организован профайл. Смотрите на другой запрос с чудесами, еще два часа копаетесь в профайлах и ничего подходящего не находите... Оказывается, нет для него профайла, это он так, по случаю необычного распределения данных поехал. Author the new oneВ оракле хинты расставляются очень легко и удобно, что провоцирует не разбираться, а по-быстрому указать хинт и не морочить себе голову.Согласен, что для разработчика - очень удобно. А при эксплуатации - очень неудобно. Не знаю, не заметил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 11:24 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Author the new one Ну, начнем с того, что я и писатель, и пользователь в одном лице, так что для меня это, например, не критично. Во-вторых, основная причина профилей, как мне кажется - нежелание разработчиков вносить всякие штуки-бяки в парсер, и потом их годами поддерживать. Идеальной - раз уж мы связались с хинтами - была бы фича сервера "давай мне запрос, возможно, с твоими хинтами, я тебе сейчас отдам такой же, но расхинтованный во всех подробностях, как я его буду делать, с учетом твоих хинтов, если они есть". Такой функционал, насколько мне известно, не реализован ни в одном сервере. Что насчёт stored outlines и вьюшек *_outline_hints в Oracle? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 11:45 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Author the new oneИдеальной - раз уж мы связались с хинтами - была бы фича сервера "давай мне запрос, возможно, с твоими хинтами, я тебе сейчас отдам такой же, но расхинтованный во всех подробностях, как я его буду делать, с учетом твоих хинтов, если они есть". Такой функционал, насколько мне известно, не реализован ни в одном сервере.В DB2 это называется explain facility (по-простому - получение плана запроса). В плане запроса, может, и не идеально, но достаточно подробно указывается как и что оно будет с запросом делать. Насколько я знаю, и в других серверах это есть. Author the new oneНепосредственное. Вы смотрите на запрос, который ведет себя странно, делаете ему индекс, то-се, а он чхать на него хотел с прибором. Через два часа выясняется, что для него организован профайл. Смотрите на другой запрос с чудесами, еще два часа копаетесь в профайлах и ничего подходящего не находите... Оказывается, нет для него профайла, это он так, по случаю необычного распределения данных поехал.В плане запроса указывается , используется профиль или нет. Если не используется, то можно определить почему . Чтобы не тратить по 2 часа на выяснение, есть ли профиль для этого запроса или нет, можно документировать создание профилей. Профили часто могут не распознаваться оптимизатором из-за того, что они требуют полного case-sensitive совпадения с оригиналом (исключая разницы в лишних символах пробела, табуляции, новой строки). Author the new one Author the new oneВ оракле хинты расставляются очень легко и удобно, что провоцирует не разбираться, а по-быстрому указать хинт и не морочить себе голову.Согласен, что для разработчика - очень удобно. А при эксплуатации - очень неудобно.Не знаю, не заметил.Конечно, пока вы и разработчик и пользователь - вы этого не заметите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 12:08 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa Author the new one Ну, начнем с того, что я и писатель, и пользователь в одном лице, так что для меня это, например, не критично. Во-вторых, основная причина профилей, как мне кажется - нежелание разработчиков вносить всякие штуки-бяки в парсер, и потом их годами поддерживать. Идеальной - раз уж мы связались с хинтами - была бы фича сервера "давай мне запрос, возможно, с твоими хинтами, я тебе сейчас отдам такой же, но расхинтованный во всех подробностях, как я его буду делать, с учетом твоих хинтов, если они есть". Такой функционал, насколько мне известно, не реализован ни в одном сервере. Что насчёт stored outlines и вьюшек *_outline_hints в Oracle? Ну и где здесь запрос со вставленными хинтами? А нэту. Куда-то оно нагадило, оттуда и берет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 14:56 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein Author the new oneИдеальной - раз уж мы связались с хинтами - была бы фича сервера "давай мне запрос, возможно, с твоими хинтами, я тебе сейчас отдам такой же, но расхинтованный во всех подробностях, как я его буду делать, с учетом твоих хинтов, если они есть". Такой функционал, насколько мне известно, не реализован ни в одном сервере.В DB2 это называется explain facility (по-простому - получение плана запроса). В плане запроса, может, и не идеально, но достаточно подробно указывается как и что оно будет с запросом делать. Насколько я знаю, и в других серверах это есть. Да не может быть. Да что ж это такое. Да я думал, что только мечта дегенерата - MySQL - так умеет. А скажите - я пытаюсь предвосхитить следующее пояснение - числа с плавающей точкой db2 тоже э-э-э умеет? Mark Barinstein Author the new oneНепосредственное. Вы смотрите на запрос, который ведет себя странно, делаете ему индекс, то-се, а он чхать на него хотел с прибором. Через два часа выясняется, что для него организован профайл. Смотрите на другой запрос с чудесами, еще два часа копаетесь в профайлах и ничего подходящего не находите... Оказывается, нет для него профайла, это он так, по случаю необычного распределения данных поехал.В плане запроса указывается , используется профиль или нет. Если не используется, то можно определить почему . Чтобы не тратить по 2 часа на выяснение, есть ли профиль для этого запроса или нет, можно документировать создание профилей. Профили часто могут не распознаваться оптимизатором из-за того, что они требуют полного case-sensitive совпадения с оригиналом (исключая разницы в лишних символах пробела, табуляции, новой строки). Прелестно, да. Между прочим, умей db2 (oracle, sybase etc.) не делать всяких аутлайнов, а возвращать запрос, в котором каждый чих отхинтован - не было бы такой нежности. Но решили обойтись малой кровью. Mark Barinstein Author the new one Author the new oneВ оракле хинты расставляются очень легко и удобно, что провоцирует не разбираться, а по-быстрому указать хинт и не морочить себе голову.Согласен, что для разработчика - очень удобно. А при эксплуатации - очень неудобно.Не знаю, не заметил.Конечно, пока вы и разработчик и пользователь - вы этого не заметите. Ну вот и ладушки. У меня своих проблем хватает, чтобы переживать за других. В конце концов - если уж приспичит - есть голодающие дети Африки, им похуже. Вообще не очень понятно, что мне тут пытаются объяснить. Чисто пофлеймить? Тоже дело хорошее, в процессе конструктивного флейма обычно рассказывают очень интересные и в то же время не очень известные вещи; а вообще непонятен предмет дискуссии. Хинты в том или ином виде сделали не от хорошей жизни: в оракле cbo иногда промахивается, и иногда промахивается очень сильно. Причем иногда особенно невовремя; в результате я для ответственных запросов предпочитаю ручками указать, что и как делать, а не полагаться на авось оно не зачудит. По крайней мере мне не будут названивать в глухую пробку и торопить что есть сил. Аутлайны - это, конечно, хорошо, но хинты указать много удобнее. Как я понимаю, у db2 проблема аналогичная, иначе бы они аналогичный функционал бы не внедряли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 15:09 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Author the new oneВообще не очень понятно, что мне тут пытаются объяснить. Чисто пофлеймить?Я никогда не ввязываюсь в флеймы. Практически все мои ответы - чисто технические. Вероятно я не понял вашу фразу про оптимизатор: "давай мне запрос, возможно, с твоими хинтами, я тебе сейчас отдам такой же, но расхинтованный во всех подробностях, как я его буду делать, с учетом твоих хинтов, если они есть" - я понял её как то, что вы не нашли, как пользоваться visual explain в db2. Такое иногда бывает, ничего необычного здесь нет. Также я думал, что у вас технические проблемы с тем, чтобы понять, используется ли профиль или нет. А что я должен был подумать, когда вы говорите о часах, потраченных на выяснение этого? Если вы всё это знаете - простите. Может, другие почитают эту ветку и найдут ссылки, приведенные здесь, полезными. Author the new oneКак я понимаю, у db2 проблема аналогичная, иначе бы они аналогичный функционал бы не внедряли.Долгое время ibm говорило, что у нас, мол, оптимизатор и так хороший, нам не надо хинтов. Но, видимо, заказчики в конце концов их убедили в обратном. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 16:15 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinДолгое время ibm говорило, что у нас, мол, оптимизатор и так хороший, нам не надо хинтов. И как Вы себе представляете обратное? "У нас оптимизатор отличный, но порой дурит, так что хинтов мы вам не дадим?" :-) Mark BarinsteinНо, видимо, заказчики в конце концов их убедили в обратном. Дык это ж абсолютно ясно. Судите сами: в тривиальном запросе Код: plaintext 1. 2. 3. 4. 5. 6. я могу знать, что %пупкиных% в t1 для тех t2, у которых col='V1' как грязи и начинать надо с t2, а вот, скажем, %пипкиных% у меня, наоборот, с гулькин нос и начинать надо с t1. Этот пример первое, что пришло в голову; очень странно, что это само собой разумеющееся соображение столь упорно отрицалось. Кстати, от него еще более успешно отмахивается постгрес, что наводит на нехорошие мысли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2008, 23:39 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
за запросы с %% яйца отстреливать надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 08:28 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
чя321за запросы с %% яйца отстреливать надо. Э-э-э... не надо быть таким категоричным. К тому же в примере вместо like мог быть запрос с параметром. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 08:46 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Author the new one я могу знать, что %пупкиных% в t1 для тех t2, у которых col='V1' как грязи и начинать надо с t2, а вот, скажем, %пипкиных% у меня, наоборот, с гулькин нос и начинать надо с t1. Этот пример первое, что пришло в голову; очень странно, что это само собой разумеющееся соображение столь упорно отрицалось. Кстати, от него еще более успешно отмахивается постгрес, что наводит на нехорошие мысли. А было такое, чтобы оптимизатор с соборанной статистикой, ошибался в селективности "пипкиных" и "V1"? Можете привести жизненный пример? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 10:55 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
чя321за запросы с %% яйца отстреливать надо. интересное заявление, а сравните-ка такое, например, для DB2 AS400 V5R2M0: f1 like '%pupkin' и substr(f1, LENGTH(f1)-6, 6)='pupkin' (и про RIGHT не вспоминайте - нету его. если не путаю, то только в V5R3M0 появился) я уже молчу, про очевидные случаи, когда без like просто не обойтись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 10:56 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
riman Author the new one я могу знать, что %пупкиных% в t1 для тех t2, у которых col='V1' как грязи и начинать надо с t2, а вот, скажем, %пипкиных% у меня, наоборот, с гулькин нос и начинать надо с t1. Этот пример первое, что пришло в голову; очень странно, что это само собой разумеющееся соображение столь упорно отрицалось. Кстати, от него еще более успешно отмахивается постгрес, что наводит на нехорошие мысли. А было такое, чтобы оптимизатор с соборанной статистикой, ошибался в селективности "пипкиных" и "V1"? Можете привести жизненный пример? Не, ну лучше было приводить пример типа Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 11:32 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Serg0 чя321за запросы с %% яйца отстреливать надо. интересное заявление, а сравните-ка такое, например, для DB2 AS400 V5R2M0: f1 like '%pupkin' и substr(f1, LENGTH(f1)-6, 6)='pupkin' (и про RIGHT не вспоминайте - нету его. если не путаю, то только в V5R3M0 появился) я уже молчу, про очевидные случаи, когда без like просто не обойтись чя321 , надо полагать, имел в виду, что фамилию надо держать в отдельном поле и пользоваться f1 = 'pupkin' вместо приведённого выше. В данном конкретном случае и я так думаю, потому что это простой случай, но в общем... мы же живём в реальном мире и временами идём на компромиссы. У Кайта я видел занятный примерчик на тему компромиссов. Юзер вводит произвольную строку, и она ищется в некоем справочнике, и это может содержаться в названии фирмы, или имени, или фамилии, или номере телефона, или в чём-то ещё - различий не делается. Люди пользуются этим поиском очень активно. Самым лучшим, по словам Кайта, вариантом оказался самый тупой. Для справочника создали "индекс" - временную таблицу с двумя полями - в одном ссылка на строку справочника, в другом поле сконкатенировали поля той строки справочника. И поиск в этом при помощи like '%%'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 11:51 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa riman Author the new one я могу знать, что %пупкиных% в t1 для тех t2, у которых col='V1' как грязи и начинать надо с t2, а вот, скажем, %пипкиных% у меня, наоборот, с гулькин нос и начинать надо с t1. Этот пример первое, что пришло в голову; очень странно, что это само собой разумеющееся соображение столь упорно отрицалось. Кстати, от него еще более успешно отмахивается постгрес, что наводит на нехорошие мысли. А было такое, чтобы оптимизатор с соборанной статистикой, ошибался в селективности "пипкиных" и "V1"? Можете привести жизненный пример? Не, ну лучше было приводить пример типа Код: plaintext 1. 2. 3. 4. 5. Я, собственно, хотел привести подобный пример, но опасался неплодотворной дискуссии на тему "а вот сервер ведет статистику для каджой колонки", и для простоты взял случай, когда такой статистики заведомо нет. Промахнулся не хуже оптимизатора - в результате посыпались предложения "отстрелить яйца за like %%" и "не, ну бывает все-таки". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 12:27 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Author the new one Victor Metelitsa riman Author the new one я могу знать, что %пупкиных% в t1 для тех t2, у которых col='V1' как грязи и начинать надо с t2, а вот, скажем, %пипкиных% у меня, наоборот, с гулькин нос и начинать надо с t1. Этот пример первое, что пришло в голову; очень странно, что это само собой разумеющееся соображение столь упорно отрицалось. Кстати, от него еще более успешно отмахивается постгрес, что наводит на нехорошие мысли. А было такое, чтобы оптимизатор с соборанной статистикой, ошибался в селективности "пипкиных" и "V1"? Можете привести жизненный пример? Не, ну лучше было приводить пример типа Код: plaintext 1. 2. 3. 4. 5. Я, собственно, хотел привести подобный пример, но опасался неплодотворной дискуссии на тему "а вот сервер ведет статистику для каджой колонки", и для простоты взял случай, когда такой статистики заведомо нет. Промахнулся не хуже оптимизатора - в результате посыпались предложения "отстрелить яйца за like %%" и "не, ну бывает все-таки". А вопрос-то от riman остался... и сводится все к простой вещи - да, возможны ситуации, достаточно частные, когда оптимизатор сильно "гадит" и ручная оптимизация дала бы лучший результат. НО это частности, а в общем? Не возможно вести статистику вместо сервера в голове программера и надеяться, что он знает, что с ней делать - посмотрите на это с точки зрения IBM или админа сервера для которого пишут сотни программеров самой разной квалификации. Было бы здорово, уметь полностью отключать оптимизатор для отдельных запросов, но в качестве исключения! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 13:22 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Author the new oneЯ, собственно, хотел привести подобный пример, но опасался неплодотворной дискуссии на тему "а вот сервер ведет статистику для каджой колонки", и для простоты взял случай, когда такой статистики заведомо нет. Промахнулся не хуже оптимизатора - в результате посыпались предложения "отстрелить яйца за like %%" и "не, ну бывает все-таки". Ну, ведёт, но будущее предвидеть всё равно не может. Ну, можно строить план по первому набору значений параметров или по каждому набору, что тоже зло. С другой стороны, у меня запросцы-то обычно посложнее будут, и их много, и если я буду заниматься хинтованием... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 13:27 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Victor MetelitsaНе, ну лучше было приводить пример типа Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 13:36 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
О! Ну, это, конечно, должно быть покруче указания join order или index, но, когда я об этом вычитал, оно у меня почему-то не работало (якобы ошибка в синтаксисе; разумеется, я не забыл про db2set и фикспаки), поэтому я просто выкинул это из головы. Надо бы проверить на теперешней версии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 13:47 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein Victor MetelitsaНе, ну лучше было приводить пример типа Код: plaintext 1. 2. 3. 4. 5. Прикольно. AS/400 как всегда обошли стороной, как я понял? :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 13:52 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
rimanПрикольно. AS/400 как всегда обошли стороной, как я понял? :).Оно там своей жизнью живет, иногда и весьма интересной. Тут почитайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 14:10 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa[quot Author the new one]Ну, ведёт, но будущее предвидеть всё равно не может. Ну, можно строить план по первому набору значений параметров или по каждому набору, что тоже зло. С другой стороны, у меня запросцы-то обычно посложнее будут, и их много, и если я буду заниматься хинтованием... Ну никто и не говорит, что оптимизатор - это неизбывное зло, совсем наоборот. Но иногда он все делает как надо, но неправильно . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 16:02 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinОно там своей жизнью живет, иногда и весьма интересной. Тут почитайте. Спасибо! Давно ждал индексы по функциям - сбылась мечта идиота! :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2008, 18:38 |
|
||
|
|

start [/forum/topic.php?all=1&fid=43&tid=1603768]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
199ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 555ms |

| 0 / 0 |
