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

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

В частности, что в DB2 хинты отсутсвуют как класс. Факт, то что в Oracle производительность запроса можно увеличить в несколько раз с пом. хинтов, он считает вовсе не крутизной, а скорее кривизной. Вот его примерные слова:

"В DB2 не важно как ты напишешь запрос. Запросы оптимайзер преобразует в некий граф с оценкой по статистики, которая всегда поддерживается в актуальном состоянии, что позволяет выбрать оптимальный план. Таким образом в шаманстве по переписыванию запросов в их более оптимальные эквиваленты попросту нет необходимости. Нужно просто написать запрос на выборку нужных данных, а отимайзер преобразует его в оптимальный внутренний эквивалент."

Нечто вроде

Код: plaintext
1.
2.
Запрос (варинат  1 ) \
Запрос (варинат  2 ) - - > оптимальное внутреннее представление
Запрос (варинат  3 ) /

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

Контраргументом был вопрос, как разработчик может знать состояние данных лучше, чем оптимайзер, если статистика всегда актуальна?

Итак, мои вопросы:

1) Буду признательна за интересные ссылки по механизму работы оптимайзера DB2 (только пожалуйста не на углубленную доскональную документацию).

2) Поделитесь впечатлениями по написанию SQL запросов. Дейсвительно вам совсем не приходится переписывать запросы?

3) Бывает ли такое, что оптимайзер заклинивает, и он упорно использует далеко не самый оптимальный план?

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

to NewYear

Рассчитываю на ваше участие:)
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530309
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поищи в 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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530413
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>2) Поделитесь впечатлениями по написанию SQL запросов. Дейсвительно вам >совсем не приходится переписывать запросы?

ну в общем да.

>3) Бывает ли такое, что оптимайзер заклинивает, и он упорно использует >далеко не самый оптимальный план?

да, бывает. если написать UDF на С++, и включить ее в запрос.
тогда нужно так создавать индексы, чтоб был один возможный план выполнения. это единственный случай, какой я знаю.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530444
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про oracle я знаю только, что там есть какие-то дурацкиe rollback-segments,
которые никому не нужны, и что при попытке откатить трарзакцию скажем, в 100 мегов он заваливается.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530456
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Nikolay

HINT кривизна, потому как он может стать не актуальным в силу изменения распределения данных etc...

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

По мне так Oracle механизм блокировок не есть GOOD для чистого OLTP или DW слишком много ресурсов допоглнительных требует.


ИМХО, как раз в Oracle блокировки не являются дорогим ресурсом. Блокировки в Oracle это просто атрибут данных. В этом отношении механизм отличается от других СУБД. Отсутсвует такое узкое место как менеджер блокировок, это одна из причин почему Oracle практически никогда не делает эскалацию блокировок, в ней просто нет необходимости. Про то, что запись никогда не блокирует чтение, и чтение никогда не блокирует запись вы наверное знаете. И то что нет необходимости подкоммичивать периодически изменения, чтобы освободить ресурсы и предотвратить дедлоки.

То что, блокировки это атрибут данных, имеет след. преимущества

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

При коммите Oracle не всегда снимает все блокировки сразу а только частично (если правильно помню 10% от buffer cache), зачем тратить ресурсы и тормозить работу других сессий сразу, например чтобы снять блокировки со 100000 измененных строк? Блокировки это атрибут данных и они просто скидываются на диск вместе с измененными данными. Они будут сняты по мере необходимости другими сессиями. При доступе к таких "неочищенным" от блокировок блокам, обращающейся к нему процесс увидит блокировку и проверив что она уже недействительна, очистит ее или просто перепишет, наложив свою. Таким образом сглаживается расход ресурсов на управление блокировками и равномерно распределяется по времени.

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

PS
В Книге Тома Кайта много подобных очень наглядно и с примерами раскрыто. Если вдруг понадобится узнать об механизмах и особенностях работы СУБД Oracle, его 2 книги это лучший способ узнать о них.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530457
Oracle XPert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Violina: Пока очень кратко. чуть подробнее немного позже..

2) Поделитесь впечатлениями по написанию SQL запросов. Дейсвительно вам совсем не приходится переписывать запросы?

К сожалению, приходится

3) Бывает ли такое, что оптимайзер заклинивает, и он упорно использует далеко не самый оптимальный план?

Да, и на базах с большим дрейфом данных - достаточно часто

HINT кривизна, потому как он может стать не актуальным в силу изменения распределения данных etc...

Not TRUE.[/ color] IBM Optimizer - кривизна по Чебышеву!
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530468
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530473
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to NewYear

про oracle я знаю только, что там есть какие-то дурацкиe rollback-segments

Есть, но почему сразу дурацкие. Это как настроишь базу, так она и себя вести будет. Вы наверное, знаете что Oracle скорее версионник чем блокировочник, rollback segments ему нужны для получения версий данных по состоянию на опрделенных момент времени. Именно они и обеспечивают возможность того, что чтение и запись не блокируют друг друга. Также они используются для отката транзакций.

to Oracle X-pert

базах с большим дрейфом данных

Что имеется в виду под дрейфом данных в вашем случае?

PS
Мы все таки здесь в гостях, давайте не будем провоцировать на выпады:)
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530487
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В продолжение...

А redo журнал нужен только в случае сбоя, для наката потерянных в результате него изменений. Наличие rollback segments позволяет Ораклу очень быстро писать redo журнал, так как он как бы берет на себя большую часть функций. Поэтому redo журнал пишется очень быстро с одной стороны, с другой стороны нет необходимости скидывать изменные данные на диск именно сейчас. Oracle скидывает их по своему усмотрению, расномерно распределяя нагрузку по времени - еще не закомиченные данные могут быть скинуты на диск или наоборот закомиченные данные могут оставаться в памяти, пока Oracle не сочтет нужным их записать - таим образом избегается еще один bottle neck.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530522
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViolinaЗапросы оптимайзер преобразует в некий граф с оценкой по статистики, которая всегда поддерживается в актуальном состоянии, что позволяет выбрать оптимальный план. Таким образом в шаманстве по переписыванию запросов в их более оптимальные эквиваленты попросту нет необходимости. Нужно просто написать запрос на выборку нужных данных, а отимайзер преобразует его в оптимальный внутренний эквивалент.
Опыт подсказывает (когда-то я занимался схожими алгоритмами), что при большом количестве элементов графа (неколько десятков) будет:
- возрастать неточность прогноза
либо
- возрастать время расчёта (причём нелинейно).
Это так? Т.е.:
Правильные (оптимальные) ли строятся планы для больших запросов?
ViolinaКонтраргументом был вопрос, как разработчик может знать состояние данных лучше, чем оптимайзер, если статистика всегда актуальна?
Могу привести пример: разработчик может знать, минимизация чего является целью оптимизации запроса. Либо времени отклика, либо суммарного выполнения запроса. Сервер БД про это никак сам догадаться не может

_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530547
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to stdio

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

Да, это один из показательных примеров. Читала одну статью противника хинтов, где он и говорил, что это единственный случай когда использование хинтов оправдано.

/*+all_rows*/
/*+first_rows*/
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530586
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Violina: Хранение блокировок в страницах имеет следствие - более высокиe требования к IO. Это тоже ресурс, Тома Кайта я читал.

2stdio: Вариацию плана можно сделать поигравшись с индексами.
Сколько времени ты тратишь на оптимизацию одного сложного запроса???

P.S. Вышесказанное есть моя личная точка зрения и не может служить официальным заявлением компании IBM
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530627
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понятия не имею про какие то там хинты, поэтому не знаю чем они лучше/хуже. Знаю лишь, что в 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 выполняет определение стоимости запроса на основе имеющейся статистики, посчитать лучше человек практически не сможет.

ЗЫ. Объясните на пальцах, что такое хинты?

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

Хранение блокировок в страницах имеет следствие - более высокиe требования к IO.

Не в страницах, в блоках. С этим можно было бы согласиться, если бы IO делалось исключительно для блокировок, но поскольку IO так и так делаются в силу изменения данных (при чтении ВООБЩЕ НЕ накладываются какие бы то ни было блокировки), то убиваются сразу 2 зайца, см. мой постинг

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

PS
Ссылки на статьи с описанием методов разбора SQL запросов все еще на повестке дня. Сама я тоже поискать попытаюсь, но наверняка кто то сможет порекомендовать конкретно что то интересное.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530667
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни то не другое. На форуме Oracle я уже давно известна подобными философско-теоретическими вопросами. См. например

Транзакционность DDL операций - друг или враг

PS
Мне действительно интересно узнать об особенностях друих СУБД так сказать из первых рук и плодотворно подискутировать, без таких выпадов типа - ацтой, дурацкие итп.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530669
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предпоследнее сообщение для riman
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530710
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Violina: Что в Oracle блок то в остальных CУБД страница.
Я имею в виду блокировки занимают место на котором могли бы располагаться данные, да немного места (чем больше конкурентность тем больше. ITL слоты
помоему это так называется).
Но сканировать-то больше приходится => больший IO.

И что означает затраты по сравнению на эскалацию пренебрежительно малы. Пока это звучит голословно.

В подтверждение моего тезиса о меньшей эффективности IO Oracle и DB2 посмотри на ничем не примечательные места 5 и 6 в TPC-C
tpc.org. Oracle быстее на 1% но и контроллеров у него больше чуть ли не в 2 раза больше

P.S. Вышесказанное есть моя личная точка зрения и не может служить официальным заявлением компании IBM
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530788
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530910
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stdio
1) Использовать exists вместо, in. И наоборот.
2) Написать выражение заведомо так, чтобы индекс не подцепился (если индекс вредит).
3) Пересмотреть принцип построения запроса.


1) Не знаю как в Oracle это реализовано, но в DB2 использование exists естесственно, потому что:

Код: plaintext
1.
2.
3.
4.
5.
For Subquery - when using negation logic:
Use NOT Exists 
	tip:DB2 tests non-existence
Instead of NOT IN
	tip:DB2 must materialize the complete result set
2) в DB2 Optimizer и не подхватит не нужный индекс, он выбирает наилучший путь.
3) не совсем понял, как это? Если Вам нужны эти данные из этих таблиц, как их ещё можно достать?

stdio
Стоп-стоп-стоп. Это ведь про выборку из одной таблицы?

естесственно.

stdio
Интересен вопрос, когда таблиц _несколько_.

вот тогда оптимизатор может подсказать какие ещё индексы нужно создать.
Про определение способа соединения оптимизатором я не знаю, надо у Николая или NewYear'a спросить

Да и вообще парочка советов по индексам:
Код: plaintext
1.
2.
3.
4.
5.
Create indexes for columns you frequently:
ORDER BY
GROUP BY (better than a DISTINCT)
SELECT DISTINCT
JOIN
stdio
А если БД производственная? Кто же разрешит "левый" индекс на БД повесить? А запрос-то нужно написать... И план знаешь, какой должен быть оптимальным... Вот только воздействовать на оптимизатор через индексы у тебя возможности нет. В Oracle это решается как раз использованием хинта.

Может тогда администратора к БД вообще не подпускать? Тем более, что плохой индекс оптимизатор точно не использует для плана доступа.

ЗЫ. Поправьте, где я ошибся. Абзацы с инглишем - из книжек, копирайты тоже оттуда.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530953
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.


Ведь в основном проблемы возникают не из за недостаточной скорости чтения данных с диска. И такие проблемы не всегда решишь, раскидав датафайлы по разным дискам или выставив другой размер блока. Действительно серьезные проблемы возникают из-за того, что юзеры начинают конкурировать за "узкие места" и "ограниченные" ресурсы и выстраиваться в очередь. Вот здесь то и сказывается "удачный" механизм реализации блокировок и распределения нагрузок по времени, позволяющий легко сводить такие ситуации к минимуму.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530993
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stdioКто же разрешит "левый" индекс на БД повесить?

NikolayМожет тогда администратора к БД вообще не подпускать?

Здесь встану на сторону Николая:) Меня тоже умиляет тот факт, что собранная статистика может быть большим злом и испортить планы выполнения.

Как вывести имена тех таблиц схемы, где есть хотя бы 1 запись????
Способ хороший, но вот когда предлагают собрать статистику для каких-то вспомогательных технических целей - это меня всегда смущает. А что если проект расчитан на использование RULE и optimizer_mode = CHOOSE. Как насчёт последствий?

если расчитано на rule, а указано choose (обычная настройка в init.ora), то сбор статистики приведет к возможным проблемам с производительностью системы. Могу привести пример - сбор статистики в oracle Applications 11.0 по рекомендациям консультантов приводил к падению производительности отчетов на 20-30%.


К счастью это решаемо

Если серьезный проект делают на rule и завязываются на этом, то выставляют режим rule и статистика пофигу. Или же выставляют режим choose и собирают статистику.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32530995
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
riman, мы исходим из разных посылок:
Я говорю, что все (оптимизаторы) не идеальны и поэтому должны быть какие-то "ручки" к БД для подкручивания.
Вы же исходите из понятия идеального оптимизатора. В принципе, изначальный вопрос Виолины и сводится к тому, что: настолько ли идеален оптимизатор IBM?
rimanМожет тогда администратора к БД вообще не подпускать?
Добавление к "покупной" системе лишнего индекса может разные последствия иметь:
1) Снижение производительности
2) Потеря тех. поддержки
В гос. конторах, вроде ЦБ, админ просто прав по служебным иструкциям такими вещами не имеет прав заниматься.
rimanТем более, что плохой индекс оптимизатор точно не использует для плана доступа
Мы исходим из разных посылок.
_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531044
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Violina.
это я сказал
2 stdio
stdioМы исходим из разных посылок.
Как я понял Вы полагаете, что оптимизатор может выдать неверный план запроса. Я же говорю, что он показывает лучший из существующих. Если можно написать лучше - Adviser предлагает создать новый план (здесь я не говорю, что этот новый план есть лучший), если администратор может обойтись без него - он пишет свой план. Если всё прошло удачно Adviser больше ничего не посоветует.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531120
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rimanКак я понял Вы полагаете, что оптимизатор может выдать неверный план запроса.
Вы неправильно меня понимаете. Я полагаю, что оптимизатор может выдать неотимальный план. Вы, наверное, согласитесь, что понятия "неверный план" и "неоптимальный план" - всё-таки разные понятия. И истолковываю "неверный" как синоним слова "неосуществимый".
rimanЯ же говорю, что он показывает лучший из существующих.
Что значит "лучший"? Оптимизатор оценивает планы в неких виртуальных "попугаях" (С) Шин. Лучший в "попугаях" - возможно. Но почему можно утверждать, что этот план будет самым лучшим на работающей системе? Ведь, если действительно стремиться построить наиоптимальнейший план, то надо учитывать текущую и будущую (на неск. минут, скажем) загрузку дисков и CPU.
rimanЕсли можно написать лучше - Adviser предлагает создать новый план (здесь я не говорю, что этот новый план есть лучший), если администратор может обойтись без него - он пишет свой план. Если всё прошло удачно Adviser больше ничего не посоветует
Что это за Adviser? Виолина, похоже, им и интересуется. Что он может? Как выглядит?
_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531150
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что это за Adviser? Виолина, похоже, им и интересуется. Что он может? Как выглядит?

Да, было бы интересным. Но дискуссия тоже интересна. В отношении механизмов построения планов я могу в ней учавствовать пока что только в режиме read only:)

PS
Кстати в Oracle 10g тоже появился родной SQL Tuning Advisor. И ИМХО в Oracle тоже все идет к тому, что статистика всегда должна быть собранной и автоматически поддерживается uptodate. Оптимайзер становиться все более "умным" и Rule Based Approach просто вымирает.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531164
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stdioЧто значит "лучший"? Оптимизатор оценивает планы в неких виртуальных "попугаях" (С) Шин. Лучший в "попугаях" - возможно. Но почему можно утверждать, что этот план будет самым лучшим на работающей системе?


Опять Вы за своё, хорошо, возможно Ваш план будет лучше. Но оптимизатор выберет лучший из рассмотренных им. Хотя чей план будет лучше это надо ещё проверить. Способны ли Вы сидеть круглые сутки и собирать постоянно статистику? Нет.

Про "неверный" и "неосуществимый" вы меня уделали, здесь я пас.:)

Adviser - это я так назвал утилиту для AS/400 - Visual Explain. Обычно она дает советы по оптимизации.

ЗЫ. А где все DB2-ники? Я один, что ли лафу гоню на работе?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531170
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:) ViolinaКстати в Oracle 10g тоже появился родной SQL Tuning Advisor. И ИМХО в Oracle тоже все идет к тому, что статистика всегда должна быть собранной и автоматически поддерживается uptodate.


Ну вот ещё не много и мы переманим Violin'y
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531187
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ландно, теперь спрошу ка я у вас, уважаемые конкуренты.
Я немного не понял про редо-журнал. По моим представлениям - это объекты в памяти, хранящие изменения в БД. Эти изменения периодически скидываются на диск, во время простоев или в т.п. ситуациях. А если произошел сбой в питании? Данные теряются что ли? Видимо я что то неправильно понял, но:
ViolinaПоэтому redo журнал пишется очень быстро с одной стороны, с другой стороны нет необходимости скидывать изменные данные на диск именно сейчас. Oracle скидывает их по своему усмотрению, расномерно распределяя нагрузку по времени - еще не закомиченные данные могут быть скинуты на диск или наоборот закомиченные данные могут оставаться в памяти, пока Oracle не сочтет нужным их записать

вот после этого я совсем смутился... Почему "не закомиченные данные скидываюдтся на диск, а "закомиченные" оставаться в памяти??? Очень необычно...
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531188
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>ЗЫ. А где все DB2-ники? Я один, что ли лафу гоню на работе?
Не ты один, я тож тут, коллега...:-)
Наверно было бы полезным вывесить пару скриншотов из Explain-a
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531206
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:)) 2 DB2-ника, гонящие лафу - это показатель. Ораклоидов (ораклистов) намного больше. :))
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531224
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не дибитушник щас...) я сайбэзист..) волею судеб..
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531225
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Stdio: По поводу того что оптимизатор думает ограниченное время. Не корректно db2advis утилита которой ты подсовываешь workload, ограничение на размер индексов, она передает это соответсвующим образом оптимизатору и он может думать над этим час, два как ты скажешь в конце выдает набор рекомендаций. Опять же можно играться с уровнем оптимизации очень помогает.

Да конечно DB2 Optimizer не идеальный и бывают случаи когда надо немного менять схему, когда допустим в Oracle можно обойтись хинтом. Но в 99% случаев он свою работу делает хорошо.

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

P.S. Вышесказанное есть моя личная точка зрения и не может служить официальным заявлением компании IBM
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531230
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
Adviser and [Visual] Explain exist for DB2 UDB for U/W/L also. imho.
Also there is "optimize for n rows"
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531254
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531299
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Db2advis позволяет использовать весь описанный тобою набор процедур и структур для оптимизации нагрузки на CУБД
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531302
Oracle XPert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Violina! Поддай жару!

========

Я так думаю. Оптимизатор ДБ2 работает по принципу [ Rotor H + USE_NL], не зная, что есть и другие способы.
Оракловский оптимизатор работает деиствительно как минимизатор маршрута к хранящимся данным, да и разнообразнее..
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531317
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щас мы все тут перегрыземся...
Код: plaintext
1.
2.
Conclusion
It is not true that Oracle 9i Database is better than DB2 Universal Database v8. 1  or vice versa. Both products can be used to build stable and efficient system and the stability and effectiveness of your applications and databases depend rather from the experience of the database developers and database administrator than from the database's provider.

опять же копирайты чьи - то, не мои, источнику верить можно
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531318
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извиняюсь, вот так удобнее читать:
Код: plaintext
1.
2.
3.
4.
5.
6.
Conclusion
It is not true that Oracle 9i Database is better than DB2 Universal Database v8. 1  or 
vice versa. Both products can be used to build stable and efficient system and the 
stability and effectiveness of your applications and databases depend rather from 
the experience of the database developers and database administrator than from 
the database's provider.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531328
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531354
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to riman

Both products can be used to build stable and efficient system and the stability ...

Безусловно. У обеих баз есть свои сильные и слабые стороны. Мне просто было интересно узнать о них. Как я уже писала я действительно была впечатлена "спосбоностью" оптимайзера DB2, если он действительно такой умный.

И, согласитесь, например метод реализации блокировок в Oracle при котором

- не происходит эскалаций
- чтение не блокирует запись
- запись не блокирует чтение
- чтение не накладывает блокировок вообще

тоже заслуживает уважения.

У меня еще вопрос, тоже несколько утрированный. Прошу не принимать его буквально. Слышала, что у DB2 настолько мощная SQL энджина, что необходимость во встроенном языке программировании практически отсутсвует. Если возможно, можно пару примерчиков, что (какие фичи)
имеются в виду? Что можно сделать с пом. SQL, для чего в других языках понадобились бы процедцры и функции.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531359
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Violina: вы думаете DB2, MS, Informix по другому пишут в Log и данные на диск?
Я вас уверяю идеологически у всех почти все одно и тоже. Причем в DB2 это почти все с самого рождения в 1998 это уже точно все было.

У Оracle в отличии от остальных надо писать еще в UNDO tablespaces. Что опять есть дополнительная нагрузка на IO. С другой стороны это плюс для выполнения отчетов по OLTP системе.

2Ora Xpert: Больше конструктивизма, лучше приводить примеры чем сотрясать воздух попусту.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531370
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DB2 CookBook
http://ourworld.compuserve.com/homepages/Graeme_Birchall/
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531378
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
Nikolay Kulikov - plus an URL to a DB2 Information Center -> Reference -> SQL. imho.

Violina - "если он действительно такой умный." it is. Try "search" at http://www.db2mag.com
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531387
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Nikolay

Я вас уверяю идеологически у всех почти все одно и тоже.

Иначе я и не думала. Трудно представить, как это могло бы быть сделано подругому. Просто riman спросил про redo, я ему ответила и указала на разницу работы с самими данными и с журналом. Вопрос опять же, в способах реализации механизма защиты/отката сделанных изменений.

У Оracle в отличии от остальных надо писать еще в UNDO tablespaces. Что опять есть дополнительная нагрузка на IO. С другой стороны это плюс для выполнения отчетов по OLTP системе.


Да, общий прирост в нагрузке на IO есть, но он частично компенсирован облегчением нагрузки на redo журнал. Откатывать транзакцию и восстанавливать версии данных на определенное состояние эффективнее/быстрее с пом. rollback segments чем проигрывая redo журнал в обратном направлении. rollback segments также цена за отсутстсвие блокировок при чтении/изменении. Классическая дилема - память/быстродейтвие.

PS
Ссылку посмотрю, может еще вопросы возникнут:)
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531417
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эффективнее использовать UNDO вместо REDO в Oracle, не в DB2. Про то как DB2 пишет в журнал можно посмотреть в "Открытых системах" есть статья про ARIES семейство алгоритмов начально разработанных в IBM Research и используемых во многих системах для журналирования. Так же если есть желание можно за денюжку почитать на www.acm.org
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531435
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Nikolay

Эффективнее использовать UNDO вместо REDO в Oracle, не в DB2.

Не сомневаюсь. Естественно раз UNDO информация также лежит в журнале, оптимизация идет в направлении эффективного отката с пом. redo журнала. Я говорю о разделении следующих задач в Оракл

- откат транзакций и получение before images
и
- защита(журнализация) изменений на случай сбоя

целями которго являеются в частности

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

Ведь раз UNDO тоже пишется в REDO журнал, оно тоже должно гарантировано быть записано на диск на случай сбоя, чтобы откатить незакомиченные данные на момент сбоя. В Oracle этого делать не нужно, redo журналы для отката как такового не используются, но например измения в rollback segments также защищены redo журналом, так что они (измения в rbs) тоже могут быть записаны Ораклом тогда, когда он сочтет нужным.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531507
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я знаю в 8.2 будет вещь сходная с HINTS только с моей точки зрения реализованная более красиво. Optimization profiles. Некоторый XML документ сужающий для оптимизатора список возможных вариантов оптимизации. Опятьже это делает администратор а не разработчик. Исходя из данных (знаний) которые оптимизатору могут быть не доступны


В Oracle есть несколько похожая фича - execution plan outlines.

Для Ораклоидов

Вот нашла интересную статью про LEO

http://www.citforum.ru/database/articles/leo.shtml

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

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

Непплохо в общем:) На первый взгляд впечатляет ... Создать точную картину как это на самом деле можно конечно, только действительно реально поработав с DB2.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531700
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViolinaСлышала, что у DB2 настолько мощная SQL энджина, что необходимость во встроенном языке программировании практически отсутсвует.
Действительно, на DB2 SQL можно написать процедуру аналогичную полноценому database-приложению, хотя мне больше нравится писать процедуры на Jave.

Я где то читал, что PL/SQL у Oracle богаче.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32531964
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32532058
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
было бы наивно считать что ИБМ создала универсальный оптимизатор ... как он работает немеряно доков на их сайте (причем на русском)

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). например изменения нагрузки или типа доминирующих запрсов, оптимизатор не будет сам менять параметры сервера, например увиличивать себе область сортировки вечером когда идут восновном отчеты, а операторы спят. это может знать только дба.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32532110
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Nikolay

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

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

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

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

to Gt.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

to ggvP-882148

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535399
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535406
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.

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

Потому что в конфигурационные файлы надо SQL-запросы вытащить.

Такая здравая мысль и так мало програм, где это делается ...
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535413
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
"А в реальности проблемы из слишком сильных блокировок и дедлоков возникают сплошь и рядом, особенно из за блокировок на чтение." ????????
As for me - that's wrong.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535430
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
As for me - that's wrong
Плохо то, что транзакция стоит пока какой-то друг не закончит, скажем, выполнять update в _своей_ транзакции и не завершит её.
_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535432
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535440
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
авторТакая здравая мысль и так мало програм, где это делается ...

дык, да потому что они трезво смотрят на реальность - как запихнуть в конфиг динамический запрос ?? ну например станндартного поиска ... понятно что какую-то часть можно, но проблемы с теми самыми 10% которые обычно динамически генерятся и поэтому на пару листов нечитаемого текста.

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

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

Ну вот нашла пример.

ADM5500W DB2 is performing lock escalation.

авторИ все же, не следует забывать, что данные лочатся даже при выборке, и не тянуть с COMMIT\'ом после нее.

Типичная неоракловая философия:) А в Oracle транзакция может и должна длиться столько сколько требует бизнес логика. Принудительно подкомичивать ради требований экономии ресурсов СУБД и блокировок нет необходимости.

авторЭскалация блокировок - необязательно плохо. LOCK TABLE - почти то же самое, только вручную.

Сделать LOCK TABLE в транзакции перед SELECT.


Это вообще нонсенс с точки зрения Oracle - делать LOCK всей TABLE в транзакции перед SELECT.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535462
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to ggv

Of course anyone with appropriate permisions could run "Select * from table" with autocommit off and stop a whole system

А если продолжительные селекты или селекты с "широким охватом" данных нужно в системе выполнять в силу требований к ней? Тогда обычно начинается - отчеты только вечером или по выходным или мол нужно рядом небольшой DWH ставить.

PS
Соглашусь с тем фактом, что если изначально писать систему под какой бы то ни было СУБД, четко осознавая ее особенности в частности особенности блокировок и пр., такие проблемы можно свести к минимому.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535499
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык, да потому что они трезво смотрят на реальность
Наоборот, смотрят они очень даже нетрезво

как запихнуть в конфиг динамический запрос ?? ну например станндартного поиска ...
Bind-переменные знаете?
Код: plaintext
select * from table_name where name = ?
Использовать готовые решения, типа Intermadia
понятно что какую-то часть можно, но проблемы с теми самыми 10% которые обычно динамически генерятся и поэтому на пару листов нечитаемого текста
Для OLTP все запросы известны заранее. Их даже рекоммедуется сразу после запуска экземпляра в pool-е прошивать. Но, почему-то это никто не делает...
Для тех 10% - вот как раз пришли к тому, про что я и писал: Там возможные запросы непредсказуемы. Ну и каждый запрос отладить - довольно бесполезное занятие. Зачем? Лучше подождать подольше...
оракл знаю может взять неоптимальный план из-за того что решает что быстрей выполнит его чем будеть искать оптимальный,
Это неверно. Oracle всегда ищет оптимальный (в "попугаях", конечно) план.
_______________
Alex
There are three kinds of people: those who can count and those who can\'t
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535553
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
авторBind-переменные знаете?


если система чуть сложнее учета картошки то статическими запросами не отделаешся, я же говорю про динамический - когда система добавляет подзапросы, джоины и т.п. ну например как hibernate.org.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535602
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я же говорю про динамический - когда система добавляет подзапросы, джоины и т.п.
Это говорит о том, что схема БД была неправильно спроектирована. Такая интеллектуальная система, думаю, гораздо страшнее безобидных хинтов окажется. А?
На http://hibernate.com/ не вижу надобности чего-то делать динамическое. Две таблицы: THINGS и TOPICS. Связь один-ко-многим. Или многие-ко-многим.
_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535620
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535628
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535644
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
2stdio

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

2ggv
авторcould you find an info yourself?

типа спецов по дб2 настолько мало что мало кто может ответить на простейшие вопросы ? хоть бы линк на раздел дал ну не знаешь - промолчи зачем на гугл отсылать ?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535650
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535666
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
мне не понятно если на их сайте это easy в чем проблема дать прямой линк на документ ?
и можно ли дб2 можно скачать официально с их сайта или вы мне воровать предлагаете ? я потратил 5 минут и не нашел.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535668
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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;
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535676
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
"я потратил 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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535678
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
что такое Information Center на www.ibm.com/db2 такого нет. в поиске тоже.
а что за проблема с прямой ссылкой ? зачем описывать пункты меню ?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32535881
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to ggv

Хорошо. поставлю вопрос по конкретнее. Как решается следующая задача в DB2?

Есть OLTP система. Продолжительные массивные отчеты не рассматриваем, селекты после завершения сразу комитятся. Данные на редактирование выбираются не только точечными запросами, но и с помощью поиска по различным критериям, возможно повторно с уточнениями, пока не будет найден нужный объект для редактирования. Во вторых некоторые сложные проверки бизнес-правил реализованы с помощью селектов на разные таблицы, частично с применением агрегации. Проверки инициируются либо из триггеров, либо явно перед изменениями. Кроме того в штатные операции входят также вызов простеньких отчетов для простмотра текщего сотстояния - например продажи за сегодняшний день, недавние поступления итп.

Вопросы

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

Пожалуйста обоснуйте ответ, хотя бы на том уровне, на каком я рассказала про механизм блокировок в Oracle. Тирады типа "excellent IBM software lets you solve any problems" не надо.

2) Если такие проблемы будут иметь место, какими путями они решаются при таком механизме блокировок как в DB2? Грязное чтение не предлагать.

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

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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536014
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536141
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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'.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536577
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536689
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну а как поисходит изоляция транзакций? если меня интересует уровень RR, скажем. я что, так и буду работать с какой-то версией, а в это время кто-то изменит данные или прочитает неверные данные? я пишу mission-critical application, и у меня на первом месте стоит сохранность данных.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536716
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в Oracle слишком сложно писать внешние процедуры, которые используют SQL, по сравнению с DB2, я читал доки. из-за дополнителных действий с бд. если дадите ссылку, покажу пальцем, где что именно.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536744
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL/SQL гораздо богаче дибитушного SPL. в DB2 считается нормой SQL programming using host languages.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536811
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про некоторые фичи, скажем Oracle Advansed Queuing, мне просто смешно читать. в сравнении с WebSphere MQ. или это к теме не относится?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536814
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle нет на AS/400.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536823
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ПК и UNIX это тоска смертая.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536872
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы. Купил книжку по Oracle 8/8i щас дочитаю её и задам вопросы, а то всё вы нас клюете...
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536890
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
riman, не покупай книжки, они только место занимают. я недавно переезжал, пришлось выкинуть килограмм 15 книжек. лучше уж наладонник. да еще и про оракле. у него и книжки толстые и не удобные.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536925
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дорогая 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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536932
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
авторPL/SQL гораздо богаче дибитушного SPL. в DB2 считается нормой SQL programming using host languages.

естественно, т.к. других вариантов нет. то что внешние процедуры зло уже поняли все производители субд, и IBM тоже, но добавить свой язык в 2 субд сразу нереально.
то же самое с версионной моделью, уже коню ясно что это большая фича, весь опенсоурс это версионики, MS добавили версионность, IBM бы и рада - но опять же в 2 субд ...
и на счет мэйнфрейма - кому этот пережиток прошлого нужен ? чтоб водружать туда Linux как это предлагает IBM ? за такие деньги ?? я понимаю еслиб он еще мог показать хоть какой-то результат на TPC, а так это для тех кто подсел и не может с 60х годов свое ПО переписать.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536936
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хе, а я шел - шел, смотрю старичок книжки продает, смотрю Оракл (новенькая ещё, Виолину вспомнил... эт сетра короче). Да и дешево совсем - 3 бакса. Пусть стоит, под моник поставлю или ещё куда
зы. Наладонник это хорошо, только денег нема, пока.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32536951
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
авторСмотрим на практически одинаковые машины в тесте tcp-c места 1,5,6 и внимательно анализуируем конфигурации и показанную производительность

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

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

авторну а как поисходит изоляция транзакций? если меня интересует уровень RR, скажем. я что, так и буду работать с какой-то версией, а в это время кто-то изменит данные или прочитает неверные данные? я пишу mission-critical application, и у меня на первом месте стоит сохранность данных.

В Oracle 2 уроня изоляции

READ COMMITED и SERIALIZABLE

Код: plaintext
1.
2.
3.
4.
5.
                    |    Read Committed   Serializable  
-----------------------------------------------------
Dirty write         |    Not possible     Not possible  
Dirty read          |    Not possible     Not possible  
Nonrepeatable read  |    Possible         Not possible  
Phantoms            |    Possible         Not possible


То что вы хотите достигается уровнем 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 это тоска смертая.

В смысле?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537006
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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) тоже могут быть записаны Ораклом тогда, когда он сочтет нужным.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537057
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Violina.
Какая разница где покупать? Хорошая книжка может и не в таких местах лежать. А кстати это хорошая книжка по Ораклу или нет:
Использование Oracle8/8i Специальное издание. Издательство "Вильямс" Москва-Санкт Петербург - Киев. 1999г. Автор Вильям Дж. Пейдж.
Купил то я её только в целях ознакомления.
[quot Violina]...аргументы меня убедили:)[quot]
Кажется вы меня опять путаете с кем-то :), хотя.. давайте переходите... на тёмную сторону силы :)
[quot Violina]...книжек нет..[quot]
У меня столько книжек по DB2 - большая сов. энциклопедия. Кто ищет тот и обрящет. :)
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537069
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gt.
при чем мейфрейм? покажи пальцем, где я сказал про мейнфрейм.

SP - может и зло. не знаю. я их не использую, как правило.

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

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

А кстати это хорошая книжка по Ораклу или нет:
Использование Oracle8/8i Специальное издание.

НЕТ!!! Но я по ней учить Оракл начинала за отсутствием чего то лучшего в то время. На самом деле действительно хороших книг по Oracle очень мало, так что выручает только документация.

Кто ищет тот и обрящет. :)

Это да. Кстати у меня тоже есть одна. Завтра скажу название (на ПТ чтобы здесь не засорять) а вы мне скажете хорошая ли она.

По Оракл хорошие книги

Oracle для профессионалов, Том Кайт
Oracle проектирование баз данных, Дейв Энсор
Oracle PL/SQL для профессионалов, С. Фейерштейн
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537111
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to NewYear

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

Когда есть втроенный платформонезависимый язык все же приятней. Знаете такую несколько шуточную притчу про программное обеспечение - а именно гибкость versus простота использования. Крайние варианты

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

На этой шкале Oracle лежит ближе к варианту "кнопка" а DB2 к варианту "компайлер":)

А написать свой язык для DB2 сейчас действительно нереально. Oracle проделал большой путь в PL/SQL - наработки, объединение PL/SQL и SQL энджин итп. Такое не сделаешь за год и это потребует больших затрат девелоперских ресурсов.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537157
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537290
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
а вот так что будет :)

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 = 'А'


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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537305
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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....
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537312
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537348
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/87266
эх, stdio, ручки ваши кривые...
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537360
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
авторВы пока объясните мне, зачем нужно иметь там по 80 полей в таблице?

80 в 5 таблицах, по 16 полей в каждой, да в принципе не важно сколько, важно, что незачем посылать запрос где хитро сплетаются 5 таблиц когда достаточно "select name from table1 where name like ..."
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537478
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 здесь его пока нет.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537500
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.

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

2Violina: Давайте не использовать слово IMHO и "мне кажется" только осязаемые измеримые аргументы.


В отношение пишеться ли UNDO и как в DB2 это были мои догадки. Поэтому я и использую ИМХО и поэтому просила вас о коментарии по этому поводу. За ссылку и объяснение спасибо.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537530
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537531
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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), помещаемой в случае частичного или полного отката транзакции.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537537
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537539
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I apologize for the double posting. My IE timed-out the first time.

VC
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537541
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, господа теоретики, тогда просвещайте.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
                     Start Journal Physical File (STRJRNPF)                     
                                                                                
 Type choices, press Enter.                                                     
                                                                                
 Physical file to be journaled  . FILE                                          
   Library  . . . . . . . . . . .                  *LIBL                        
                           + for more values                                    
                                                   *LIBL                        
 Journal  . . . . . . . . . . . . JRN                                           
   Library  . . . . . . . . . . .                  *LIBL                        
 Record images  . . . . . . . . . IMAGES         *AFTER                         
 Journal entries to be omitted  . OMTJRNE        *NONE                          
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                         Bottom 
 F3=Exit   F4=Prompt   F5=Refresh   F12=Cancel   F13=How to use this display    
 F24=More keys                                                                                                                                                  


есть вот токая строка
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_ данными
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537560
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537565
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы должны сделать:
commitMQ, затем commitDB
или
commitDB, затем commitMQ

вовсе нет. commit толко один -> commitMQ.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537569
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
commit толко один -> commitMQ
А в БД транзакцию когда фиксировать?
_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537579
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно я некорректно сказал 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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537589
Фотография Ааз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет
С интересом почитал нитку. И, хотя были моменты "на грани фола", в целом мне понравилось, что есть таки в форуме люди, умеющие вести разумную дискуссию, не срываясь на 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.
SELECT ... FROM A
WHERE A.X = ...
  AND A.Y = ...
и есть индексы по A.X и A.Y
b) BITMAP MERGE (если память не изменяет)
Код: plaintext
1.
2.
3.
4.
SELECT ... FROM A
WHERE A.X = ...
   OR A.X = ...
  AND A.Y = ...
и есть битовый(ые) индекс(-ы) по A.X (OR) и/или A.X и A.Y (AND)

Всего
--
Andrei Kriushin (Oracle8/8i/9i OCP DBA), RDTEX J.S.C.
Disclaimer: Opinions are of my own and not necessar(-il)y...
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537590
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
Commitment control requires before-images for the system to roll back uncommitted changes. When you open a file under commitment control, the system automatically journals both before-and after-images while the commitment definition is active. If you normally journal only after-images, the system writes before-images only for the changes made under commitment control.

VC
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537596
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
авторА что одной таблицей с 16+1 полями обойтись нельзя? И делать запрос типа:
select name from table where name like '...' and q_context = Номер.
Ну, и индекс, конечно по name и q_context сделать...

мда :) наверно можно - но только ради премии, за самый оригинальный подход :) если поля нужны из 3 табличек, то вы каким методом джоин будете делать ? или метод джоина в своих хинтах прописывать бум ??? :)
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537601
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537612
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537639
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
авторТак мы вроде бы на одной таблице договорились? Откуда ещё две появились?

ок, играем в дурочка :) есть 5 табличек, в них 80 полей, поиск должен уметь искать по всем полям всех таблиц, запросы иногда бывают простенькие возвращающие поля 1 таблички, иногда сложные возвращающие поля всех таблиц.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537865
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
in-doubt transaction != греха, but the normal situation with well-known predefined result
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537926
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Visual Explain screenshot
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537930
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скриншот.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537939
riman_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ж) извиняюсь, у меня тоже в первый раз по таймауту вылетело...
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537949
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Ааз
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Index-from-index access method
The database manager can build a temporary index from an existing index without 
having to read all of the rows in the dataspace. Generally speaking, this selection 
method is one of the most efficient. The temporary index that is created contains 
entries for only those rows that meet the selection predicates. This is similar to the 
index created by a select/omit logical file (commonly referred to as a sparse index). 

Where the index-from-index access method is most effective 

The optimizer chooses this method when: 

The query requires an index because it uses grouping, ordering, or join processing. 
A permanent index exists that has selection columns as the left-most keys and the
 left-most keys are very selective (i.e., index scan key positioning can be used). 
The selection columns are not the same as the ordering, grouping, or join-to 
columns. 
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538188
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538334
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 тоже позволяет.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538437
Splаin_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Splain wrote

По поводу оптимизации запросов:

http://citforum.ru/database/articles/sql_optimization.shtml

Если обратиться к истории, то узнаем, что написанием оптимизатора Oracle занимались в том числе и бывшие сотрудники IBM. Большинство разработок новых и их практическая реализация производились в лабораториях IBM. Поэтому нет ничего удивительного в том, что оптимизатор SQL запросов DB2 лучше, современее и меньше ошибается.
Тому подтверждение - LEO - усовершенствованный алгоритм оценки селективности предикатов.
Собственно говоря поэтому в DB2 отсутствуют хинты как класс - они там просто не нужны. Думаю и Оракл придет к этому через некоторое время. Однако это скорее доставляет некоторое неудобство и увеличение времени разработки разработчикам и на конечном пользователе и производительности промышленных баз не должно особо сказываться.

Дискусия по поводу undo - от лукавого. В этом смысле у DB2 и Оракл просто разные сегменты рынка. Это особенности работы СУБД, и не более. Соответсвенно и сравнивать их глупо - в каждом иднивидуальном случае ответ будет разным.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538469
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Splain

Это особенности работы СУБД, и не более.

Из одного прикола "А давайте объявим этот баг фичей ..."

Особенности бывают удачно реализованные и неудачно.

Дискусия по поводу undo - от лукавого.

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

В этом смысле у DB2 и Оракл просто разные сегменты рынка.

Не поняла аргумент? Что дейсвительно настолько разные?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538506
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Violina
>"А давайте объявим этот баг фичей ..."
то же самое про select for update, чтоб заблокировать запись.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538616
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to NewYear

Неблокирующий селект не случайный побочный эффект а поставленная цель в достижении минимального наложения блокировок. И то что он не блокирует, это большое преимущество и достижение. Селект он предназначен для чтения, а не для блокирования. Просто из за его блокирующих свойств во многих СУБД разработчики быстро взяли этот эффект на вооружение. А завязывать логику программы на побочных эффектах и применять фичи не по назначению это не есть gut.
Если вы хотите заблокировать данные, вы делаете это явно select for update. Если вы их просто читаете, вы не накладываете никаких блокировок и не мешаете другим сеансам. Вот и всё.

PS
Таких примеров использования не по назначению уйма. Например в Oracle появились фичи flashback database/flashback queries - можно запрашивать базу по состоянию на момент времени в прошлом. Уже назревают попытки использовать такую фичу для хранения исторической информации.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538632
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gt.есть 5 табличек, в них 80 полей, поиск должен уметь искать по всем полям всех таблиц, запросы иногда бывают простенькие возвращающие поля 1 таблички, иногда сложные возвращающие поля всех таблиц
Вы мне предлагаете последствия неправильного дизайна разбирать?
Давайте о чём-то конкретном говорить. Про hibermate я сказал, как всё замечательно раскладывается: таблица-справочник категорий и таблица элементов.
_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538640
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А аргумент, вот мол чтобы у нас заблокировать запись досточно написать

select from

а у вас надо писать

select from for update

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

это тебе так кажется. если б я реально писал те транзакции, я бы про блокировки даже и не вспомнил.

я понимаю это так: oracle, когда пишешь любую транзакцию, нужно помнить, а может данные уже изменены, а я читаю устаревшие данные.
это явно баг.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538734
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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 :)
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538778
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а может данные уже изменены, а я читаю устаревшие данные. это явно баг.

Опять двадцать пять. Вы мой предыдущий пост читали? Если вы хотите гарантировано прочитать данные, которые никто не изменит, вы явно накладываете блокировку и все. Почему вы решили что эта возможность в 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 такого быть не не может. Как я уже писала данные там консистетны на начало запроса.

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

кажется :)
но пользователи давольно быстро таким забывчивым напоминают ;)

авторВы мне предлагаете последствия неправильного дизайна разбирать?

ладно желаю удачи в оригинальных подходах, то что хотел я показал ;)
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538832
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 лучше, если они реализованы в ядре самой СУБД.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538836
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViolinaНеблокирующий селект не случайный побочный эффект а поставленная цель в достижении минимального наложения блокировок.
Нет, это как раз побочный эфект, цель любого планировщика транзакций сохранить целостность базы при выполнении серии паралельных транзакций, для чего предложена много разных механизмов самые известные из которых это блокирование и версионность ( механизм отметок времени с сохранением версий). Так вот неблокирующий селект это побочный эффект "версионной" части Oracle механизма concurency control.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538886
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Я и ёжик

цель любого планировщика транзакций сохранить целостность базы при выполнении серии паралельных транзакций

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

Так вот неблокирующий селект это побочный эффект "версионной" части Oracle механизма concurency control.

А что же тогда по вашему есть цель "версионной" части Oracle механизма concurency control?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538905
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538911
Фотография Ааз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет
2 riman: спасибо за пояснение.
Всего
--
Andrei Kriushin (Oracle8/8i/9i OCP DBA), RDTEX J.S.C.
Disclaimer: Opinions are of my own and not necessar(-il)y...
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538917
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Слишком обще. То что лучше - часть системы или 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 можно играться в приоритетами транзакций.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538924
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Violinа
>Селект не изменяет данных, почему селект должен заботиться о целостности >азы
да не селект, транзакция, транзакция изменяет данный. нельзя рассматривать сетект вне транзакции
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538937
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538956
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 или систем никто и не оспаривает.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538960
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViolinaА при чем тут целостность базы? Селект не изменяет данных, почему селект должен заботиться о целостности базы? Это делается при кокурентном измении базы а не при чтении.
Ну изменения данных обычно делается не из воздуха, а на основе произведенного чтения, нельзя чтение рассматривать вне контекста транзакции. В общем случае транзакция производит чтение, делает некий анализ, на основе которого формирует данные для записи.
Только читающая транзакция вырожденный случай, но и здесь шедулер должен позаботится о целостности полученных данных, т.е наша транзакция только читает, но она ведь не одна в базе?

ViolinaА что же тогда по вашему есть цель "версионной" части Oracle механизма concurency control?
Во первых я бы не рассматривал отдельно "версионную" сторону механизма concurency control, всё таки это единый механизм и цель любого такого механизма это поддержание целостности данных в условиях наличия конкурирующих транзакций, с подцелью обеспечения максимальной пропускной способности.
Если всё таки попытаться разделить, то версионная часть в большей степени отвечает именно за поддержание целостности, а блокировочный механизм предназначен для предотвращения конфликтов на более ранней стадии ( дешевле приостановить транзакцию, чем потом её откатывать). Кроме того блокировочный механизм служит для искуственной "сериализации транзакций" когда версионный механизм Oracle с ней не справляется ( write skew, и.т.п.).
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538969
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>И как OS будет разбираться во внутренних особенностях процессов БД
процессы БД и процессы OS это одно и то же

>А может тогда и СУБД в OS перенесем
а так и есть
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538973
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вчера поставил Oracle8/8i под впечатлением топика. Ну что вам сказать? Я потрясен! Красота да и только, Как они всё это сделали? В DB2 такого точно нет. А база как выглядит....мммм. ... эт сетра.

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

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

Какие данные изменяются здесь?

Код: plaintext
1.
2.
begin transaction
select * from emp;
commit;

PS
В Oracle также есть еще уровень изоляции READ ONLY = serializable read only.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538989
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to riman

Всё вышеперечисленное про интерфейс

Совершенно согласна. В свое время я тоже возмущалась что как можно так мало внимания и усердия выделять тому, что является ИМХО визитной карточкой продукта. Но Oracle считает это малоприоритетным. Слышала что эти явавские GUI тулзы пишут в Индии.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539001
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это частный случай.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539012
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Я и ёжик

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


Это уже из области выбора оптимистической или пессимистической блокировок. В других СУБД для экономии ресурсов при выборке часто делают сразу commit

Код: plaintext
1.
select from 
commit

Так что приходим к такому же эффекту, выбранные данные могут быть изменены кем то другим.

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

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

, т.е наша транзакция только читает, но она ведь не одна в базе?

Не одна, но она ничего не изменяет. Заботятся о наложении нужных блокировок те транзакции которые данные изменяют.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539018
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Violina. Вы меня постоянно неправильно понимаете. Я наоборот восхищался Оракловыми ГУЯми, потому что IBM приоритет на ГУИ поставила ещё меньше, чем Оракл.
Впрочем ГУИ меня мало интересуют, мне и консоли хватает.

зы. DB2-ники, не пользуйтесь ГУЯми от IBM - багов в ней куча. Постоянно подправлять приходится.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539022
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
авторВчера поставил Oracle8/8i под впечатлением топика

а почему не 7ку ? она постарше (солидней ) :)
на самом деле уже у 9ки нормальный интерфейс, но жуууутко тормозной, зато наконец в 10ке догадались вебный. гораздо удобней, а главное на порядок навароченей микрософтовского (с дб2 сравнить не могу не видел)
так-что наезды на интерфейс уже пару лет не актуальны ...
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539024
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to NewYaer

Опять вы предодностие все так, как будто в Oracle невозможно предварительно выбрать данные на редактирование. Как я уже писала такая возможность есть.

Рассматривайте неблокирующее чтение тогда как возможность например сгенерить отчет не мешая блокировками другим сеансам, если вам так удобнее. В некоторых СУБД это делается с помощью dirty read, в Oracle с пом. версионирования.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539045
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to riman

Violina. Вы меня постоянно неправильно понимаете.

А я увидела иронию:) Наверное потому что философии у нас разные.

to all

Для разрядки обстановки. Еще раз повторюсь что не ставила целью "показать" что Oracle rulez или типа этого. Мне интересны особенности, плюсы и минусы тех или иных подходов в сравнении с DB2 и примеры, о чем я задаю вопросы. Не рассматривайте такие вопросы как наезд - в штыки. Пока что более или менее дускуссия удается. За других я отвечать не могу, просто хочу попросить не надо провокаций. А то скатимся как в сравнении СУБД

- База X рулит, база Y ацтой
... наезды и оскорбления
- потом примирительное: все базы хороши выбирай на вкус
- потом философское: базы они не плохие или хорошие, они другие
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539061
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дорогая Violina. После ответа Gt я понял - то что ораклисты называют разной философией, DB2-ники назовут предвзятостью :Р.

DB2 - рулез форева. Выньдос - мастдай. Про Оракл потом - когда "они" уйдут ;)))
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539092
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
"Мне интересны особенности, плюсы и минусы тех или иных подходов в сравнении с 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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539103
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
It's like - I want to be alone in a queue for irish stout, and you want to be alone too :)
(additions about pools)
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539127
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Violina Это уже из области выбора оптимистической или пессимистической блокировок.
А если вообще нет блокировок, из какой области это будет? Чистый версионный механизм не требует блокировок вообще.
Посмотрите например главу об управлении паралельными заданиями в книжке:
Гектор Гарсиа-Молина. Джеффри Ульман и Дженнифер Уидом "Системы баз данных. Полный курс", у них описан версионный механизм без применения блокировок.


ViolinaВ других СУБД для экономии ресурсов при выборке часто делают сразу commit Это их проблемы. Компромис между целостностью, надежностью и скоростью. По большоиму счету транзакция должна быть едина и неделима и должен иметь место и жизнь только один уровень изолированности транзакций - "serializable" всё остальное компромисы, и не важно каким механизмом он реализован, но к сожалению во всех существующих шедулерах он достается большой ценой.

Violinaпозаботится о целостности полученных данных позволяет версионированние. О том и речь, планировщик заданий на основе механизма версионирования. А еще об этом моог бы позаботится планировщик на основе блокировок, или механизм валидации транзакций, ила планировщик на основе временных штампов или и.т.д.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539160
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 выставляется на уровне пула?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539193
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Я и ёжик

Чистый версионный механизм не требует блокировок вообще.

Я приводила гипотетический пример здесь

Оракл не 100% версионник. В 100% версионнике можно было бы действительно работать со своей версией данных сколь угодно без учета что происходит "снаружи" а о сюпризах узнавать только при коммите. Но такая реализация имеет интерес чисто теоретический. Так что сюрпризы из-за одновременного изменяющего доступа в одной и той же строке не откладываются до коммита а проявляются немендленно при возникновении конфликта.


По большоиму счету транзакция должна быть едина и неделима и должен иметь место и жизнь только один уровень изолированности транзакций - "serializable" всё остальное компромисы

Тогда бы базы были точно похожи:) Возможно каждая отличалась бы тем, на каком этапе юзер должен был конфронтировать с сюрпризами из за невозможности сериализации. Длинные транзакции были бы вообще немыслисмы.

всё остальное компромисы

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

О том и речь, планировщик заданий на основе механизма версионирования. А еще об этом моог бы позаботится планировщик на основе блокировок, или механизм валидации транзакций, ила планировщик на основе временных штампов или и.т.д.

Мог бы и каждый со своими последствиями и выигрышами. Каждая СУБД выбрала свой метод.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539234
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to riman (для разгрузки)

Ну и активность у вас на форуме. Я уже успела набрать 1.92% от форума DB2. В Oracle у меня 3.32% - прям TPC-C какой-то. Если так дальше пойдет, то глядишь спецом по DB2 стану
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539254
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так и догоняет DB2 Oracle - короткими шагами, покрывая большие дистанции.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539273
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViolinaЕще раз подчеркну, ведь в Oracle не отсутсвует такая возможность - предварительно заблокировать данные на редактирование. Не может быть!!! :)

ViolinaТогда бы базы были точно похожи:)
И это было бы правильно и хорошо. Юзеру наплевать каким образом и за счет чего достигнута сериализация, он только знает, что НИКАКИЕ его действия не приведут к рассогласованию данных ( если отдельная транзакция сама по себе верна).
ViolinaВозможно каждая отличалась бы тем, на каком этапе юзер должен был конфронтировать с сюрпризами из за невозможности сериализации.
Невозможности сериализации не бывает, она может достаться слишком дорогой ценой.
ViolinaДлинные транзакции были бы вообще немыслисмы.
С чего такой вывод?

ViolinaНу так мы придем опять к филосовской проблеме - одновременный доступ и целостность данных. Это не филосовская проблема , а вполне техническая, и книжки по этому поводу пишут не филосовские, а тоже вполне техничиские. И это как раз и есть одна из важнейших задач которую должна выполнять СУБД

ViolinaМог бы и каждый со своими последствиями и выигрышами. Каждая СУБД выбрала свой метод. Всё точно и правильно.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539290
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to riman

Вот так и догоняет DB2 Oracle

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

А вообще хорошо, что есть несколько достойных СУБД, они вон конкурируют друг с другом, развиваются, на TPC пытаются друг друга скинуть.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539307
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539315
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Я и ёжик

Не может быть!!! :)

И вы туда же? Я это сказала не потому что якобы вы это не знаете. А подчеркнуть то, что эта возможность есть и есть дополнительная возможность выполнить select без блокировок. См. также аналогию с указателями - не стоить запрещать некую фичу только потому, что кто то может принести вред используя ее не по назначению.

Невозможности сериализации не бывает, она может достаться слишком дорогой ценой.

Для всех одновременных транзакций нет, если они "сцепились" за одни и теже данные. Кто то должен обломаться, иначе - потерянные изменения или строго последовательные изменения с ожиданиями.

автородновременный доступ и целостность данных.
Это не филосовская проблема

Философская я имела в виду в смысле неразрешимая в такой категорической постановке как ваша.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539365
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViolinaИ вы туда же? Я это сказала не потому что якобы вы это не знаете.А подчеркнуть то, что эта возможность есть и есть дополнительная возможность выполнить select без блокировок.
Sorry, не хотел обидеть. Я просто хочу вернуться к тому с чего начал, на мой взгляд это не "возможности" всмысли фичи :) , а просто побочные эффекты используемого механизма concurency control, которые естественно можно использовать в своих целях.

ViolinaДля всех одновременных транзакций нет, если они "сцепились" за одни и теже данные. Кто то должен обломаться, иначе - потерянные изменения или строго последовательные изменения с ожиданиями.
Такова "се ля ви" кто то обламывается, кто то ждёт.

ViolinaФилософская я имела в виду в смысле неразрешимая в такой категорической постановке как ваша.
Почему такое неверие в людей?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539375
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539385
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539388
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
--------------------------------------------------------
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539395
Splain
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Violina
Spl>В этом смысле у DB2 и Оракл просто разные сегменты рынка.

Не поняла аргумент? Что дейсвительно настолько разные?



Ну исходя из статистики:

user commits: 260000
user rollbacks: 1800

shutdown abort тоже бывает очень редко, точнее в исключительных случаях.

на рабочем сервере мне как бы не особо нужен rbs - здесь больше реализация db2 одошла бы.

Хотя есть и аргументы за присутствие rbs, причем более весомые для нас:

1. нет блокировок чтения
2. чуть большая надежность.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539398
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To: NewYear,

<quote>
как ты и говорил. rollback не работает
</quote>

Well, it's sort of obvious, isn't it ;)

VC
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539401
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересно, можно писать вообще без rollback-ов? тогда можно место на логах сэкономить.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539406
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 Я и ежик

Почему такое неверие в людей?


см. вашу предыдущую фразу:)

Такова "се ля ви" кто то обламывается, кто то ждёт.


Именно поэтому. ИМХО такие крайности не всегда приемлемы, их стоит использовать только если это действительно требуется.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539415
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539416
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539422
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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:)
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539431
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Violina
Именно поэтому. ИМХО такие крайности не всегда приемлемы, их стоит использовать только если это действительно требуется.
Крайности во многом от того, что большинство обсуждаемых механизмов, предотвращают не только реальные , но и потенциальные конфликты, дуют на молоко... Но я бы не стал утверждать, что невозможно придумать более эффективного механизма.
А потом вычислительные системы пока развиваются быстрее , чем обслуживаемый ими бизнес, поэтому в думается в скором времени, для многих систем даже выстраивание в последовательную очередь транзакций, не будет проблемой, чем не решение :)
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539433
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Я и ёжик

Может я неправильно перевожу, но я не говорил , что Multiversion concurrency control это побочный эфект, я как раз говорил что не блокирующее чтение это побочный эффект Multiversion concurrency control.

Не блокирующее чтение и есть improved concurrency provided by multiversion concurrency control. Или вы видете improved concurrency в чём то другом?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539435
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поэтому в думается в скором времени, для многих систем даже выстраивание в последовательную очередь транзакций, не будет проблемой, чем не решение :)

Вы оптимист?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539438
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539439
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Ораклоиды.
С какой версии эти хинты появились? И redo-журналы?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539446
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539447
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539450
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.

скажу только что есть аналогичные структуры и эффект достигается тем же путем.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539455
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Ну это вы взяли крайние случаи реализации системы. Конкретнее сказать ничего не могу, возможно.
Согласен, здесь очень специфичный случай.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539468
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vc123 I am curious as to what your objection is to the Oracle characterization as a mixed multiversion 2PL/TO scheduler.
Моё objection не простиралось столь глубоко.:)
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539485
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНе блокирующее чтение и есть improved concurrency provided by multiversion concurrency control. Или вы видете improved concurrency в чём то другом? В одних случаях improved, в других случаях не improved,
если бы был единственно верной механизм который всегда improved, наверное ведь других бы и не прдлагали?

ViolinaВы оптимист?
А как же, завтраж карнавал :))
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539532
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539542
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539560
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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, который (процесс) будет напрямую :-) работать с базой....для базы данных (разница всмысле).
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539600
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539627
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор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. "Уберите пилу я всё поняла..." :)
Да, я пожалуй слишком привык рассматривать его как часть единого механизма. Убедили.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32539833
Grаf f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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. А где сами то отчеты? Я не нашел:-( Они только для мемберов доступны?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32540471
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to New Year

>И как OS будет разбираться во внутренних особенностях процессов БД
процессы БД и процессы OS это одно и то же


Не всегда одно и тоже. Не знаю как в DB2 (наверняка тоже есть), но в Oracle есть вариант конфигурации shared server. В этом случае один процесс может обслуживать несколько сессий. Как в таком случае распределять CPU ресурсы среди сессий на уровне OS?

Кроме того в Windows часто "процессы" это threads одного "натоящего" процесса, потому что реалезиация с пом. нескольких настоящих процессов, общающихся через Interprocess Communication, не всегда обеспечивает нужную производительность, плюс проблемы доступа к общей памяти разными процессами. Как в таком случае распределять CPU ресурсы среди сессий на уровне OS? Или поскольку Windows must die, на него можно забить?

В общем моё предположение, что управление распределнием CPU ресурсов для сессий на уровне OS не всегда обеспечивает нужную гибкость и гранулярность.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32540520
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bиолина, я это сказал про OS/400.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32540562
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to NewYear

ОК.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32540612
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Graf f: pdf-ка называется full disclosure report. В ней все это есть.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32540620
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Или поскольку Windows must die, на него можно забить?
в Windows нужен координатор, наверно. через TXSeries я 50 транзакций запускал одновременно, как-то они работали.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32540739
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
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.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32540774
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот уж не знаю...
кстати, в пятой версии TXSeries, похоже, бага. мне так и не удалось связать TXSerie 5 и MQ, region не стартовал из-за XA Resource. c 4 все заработало.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32541475
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vc123: Ваши поправления сподвигли меня поднять архивы и почитать на выходных как-же работает DB2 в плане журналирования, за что вам отдельное спасибо. В DB2 как таковых явных UNDO данных нет. Все записи идут как REDO записи в том числе и записи откатов. Откаты записываются как СLR (Compensated Log Records) которые в обратном порядка перезаписывают измененные данные. Фактически на уровне журнала откат выглядит как "компенсирующая транзакция". Нашел в архивах ссылку на описание на интересно ARIES-RRH , читайте кому интересно.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32541828
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32543341
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Долго курил документацию 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">документацию и Мохана и форум. Понял в чем же я тупил. Спасибо.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32544853
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нам нужны тесты. Достаточно простые, чтобы их легко было устанавливать на сервера и проводить, а также портировать на другие базы данных, и в то же время похожие на реальные приложения.

Что-то типа такого: http://www.pcmag.com/article2/0,1759,4178,00.asp

Правда, приведенный именно по этой ссылке тест нехорош. Во-первых, к download'у предлагается неполный комплект, отсутствуют:
* application server
* тестовые данные
* клиентская часть (которая делает запросы к application server)
то есть вы не можете, выкачав тест и тут же его установить и прогнать.

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

В-третьих, запросы слишком просты и потому с точки зрения сравнения оптимизаторов неинтересны.

Но как отправная точка тест может быть интересен. Данные можно сгенерировать, тест-приложение - модифицировать...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Интилигентность оптимайзера, база без хинтов - реальность?
    #35236067
V&B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&B
Гость
ViolinaСразу оговорюсь, что вопросы несколько поверхностные и утрированные. Я с DB2 совершенно не знакома, так что рассматривайте мой постинг как спортивный интерес новичка.

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

В частности, что в DB2 хинты отсутсвуют как класс. Факт, то что в Oracle производительность запроса можно увеличить в несколько раз с пом. хинтов, он считает вовсе не крутизной, а скорее кривизной. Вот его примерные слова:

"В DB2 не важно как ты напишешь запрос. Запросы оптимайзер преобразует в некий граф с оценкой по статистики, которая всегда поддерживается в актуальном состоянии, что позволяет выбрать оптимальный план. Таким образом в шаманстве по переписыванию запросов в их более оптимальные эквиваленты попросту нет необходимости. Нужно просто написать запрос на выборку нужных данных, а отимайзер преобразует его в оптимальный внутренний эквивалент."

Нечто вроде

Код: plaintext
1.
2.
Запрос (варинат  1 ) \
Запрос (варинат  2 ) - - > оптимальное внутреннее представление
Запрос (варинат  3 ) /

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

Контраргументом был вопрос, как разработчик может знать состояние данных лучше, чем оптимайзер, если статистика всегда актуальна?

Итак, мои вопросы:

1) Буду признательна за интересные ссылки по механизму работы оптимайзера DB2 (только пожалуйста не на углубленную доскональную документацию).

2) Поделитесь впечатлениями по написанию SQL запросов. Дейсвительно вам совсем не приходится переписывать запросы?

3) Бывает ли такое, что оптимайзер заклинивает, и он упорно использует далеко не самый оптимальный план?

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

to NewYear

Рассчитываю на ваше участие:)Я тоже слышал, что DB2 быстрее Oracle работает, но не могу найти ссылку.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35236091
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Смотрите на видео " : Восставшие из АДА 2008
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35456022
Author the new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mitek"Смотрите на видео " : Восставшие из АДА 2008

Ну, тем не менее, сухой остаток: хинты в db2 есть, и гораздо более неудобные, чем в Oracle. Это, наверное, и правильно.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35456206
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Author the new oneНу, тем не менее, сухой остаток: хинты в db2 есть, и гораздо более неудобные, чем в Oracle. Это, наверное, и правильно.В db2, начиная с v8.2.2 появились OPTIMIZATION PROFILES .
По-моему, они гораздо удобнее, т.к. не надо код трогать.
Оно единствено где неудобно может быть, так это если приложение динамически запрос строит.
Но вот конструирование динамически запроса вместе с хинтом - это уже слишком высокое искусство программирования ИМХО...
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35459069
Author the new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinstein Author the new oneНу, тем не менее, сухой остаток: хинты в db2 есть, и гораздо более неудобные, чем в Oracle. Это, наверное, и правильно.В db2, начиная с v8.2.2 появились OPTIMIZATION PROFILES .
По-моему, они гораздо удобнее, т.к. не надо код трогать.

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

В оракле хинты расставляются очень легко и удобно, что провоцирует не разбираться, а по-быстрому указать хинт и не морочить себе голову.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35459106
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Optimization profiles - аналог не только хинтов, но и stored outlines.

Что касается величины неудобства, то я согласен. (Все мои программы используют CLI и многие запросы строят динамически). Что касается того, что это хорошо... это вряд ли. Вот не было хинтов совсем (за исключением optimize for N rows) - тогда и правда было хорошо, можно было развести руками и сказать - "ничего сделать не могу" (шутка; всегда можно что-то сделать).
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35459599
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Author the new oneЭто как раз феерически неудобно: запрос в одном месте, хинты в другом, вот так вот просто не поправишьЗапрос пишется 1 раз по-хорошему и больше не переписывается, иначе вам пользователям вашей программы придется предоставлять исходники или еще как-нибудь давать возможность править ваши запросы. А это - большое зло.
Оптимизационные профили именно вот так просто и можно поправить, не трогая код - а это серьёзное преимущество при эксплуатации.
Author the new one, и почему некий запрос работает так, а не эдак неочевидно совершенно.Не понял. К хинтам это какое отношение имеет?
Author the new oneЭто, как мне кажется, правильно: расстановка хинтов - дело не очень хорошее, и как всякое нехорошее дело должно требовать дополнительный усилий и быть максимально неудобным.Иногда без этого не обойтись, либо весьма трудно обойтись.
Author the new oneВ оракле хинты расставляются очень легко и удобно, что провоцирует не разбираться, а по-быстрому указать хинт и не морочить себе голову.Согласен, что для разработчика - очень удобно.
А при эксплуатации - очень неудобно.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35459688
Author the new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinstein Author the new oneЭто как раз феерически неудобно: запрос в одном месте, хинты в другом, вот так вот просто не поправишьЗапрос пишется 1 раз по-хорошему и больше не переписывается, иначе вам пользователям вашей программы придется предоставлять исходники или еще как-нибудь давать возможность править ваши запросы. А это - большое зло.
Оптимизационные профили именно вот так просто и можно поправить, не трогая код - а это серьёзное преимущество при эксплуатации.

Ну, начнем с того, что я и писатель, и пользователь в одном лице, так что для меня это, например, не критично. Во-вторых, основная причина профилей, как мне кажется - нежелание разработчиков вносить всякие штуки-бяки в парсер, и потом их годами поддерживать. Идеальной - раз уж мы связались с хинтами - была бы фича сервера "давай мне запрос, возможно, с твоими хинтами, я тебе сейчас отдам такой же, но расхинтованный во всех подробностях, как я его буду делать, с учетом твоих хинтов, если они есть". Такой функционал, насколько мне известно, не реализован ни в одном сервере.

Author the new one, и почему некий запрос работает так, а не эдак неочевидно совершенно.Не понял. К хинтам это какое отношение имеет?

Непосредственное. Вы смотрите на запрос, который ведет себя странно, делаете ему индекс, то-се, а он чхать на него хотел с прибором. Через два часа выясняется, что для него организован профайл. Смотрите на другой запрос с чудесами, еще два часа копаетесь в профайлах и ничего подходящего не находите... Оказывается, нет для него профайла, это он так, по случаю необычного распределения данных поехал.

Author the new oneВ оракле хинты расставляются очень легко и удобно, что провоцирует не разбираться, а по-быстрому указать хинт и не морочить себе голову.Согласен, что для разработчика - очень удобно.
А при эксплуатации - очень неудобно.

Не знаю, не заметил.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35459779
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Author the new one
Ну, начнем с того, что я и писатель, и пользователь в одном лице, так что для меня это, например, не критично. Во-вторых, основная причина профилей, как мне кажется - нежелание разработчиков вносить всякие штуки-бяки в парсер, и потом их годами поддерживать. Идеальной - раз уж мы связались с хинтами - была бы фича сервера "давай мне запрос, возможно, с твоими хинтами, я тебе сейчас отдам такой же, но расхинтованный во всех подробностях, как я его буду делать, с учетом твоих хинтов, если они есть". Такой функционал, насколько мне известно, не реализован ни в одном сервере.

Что насчёт stored outlines и вьюшек *_outline_hints в Oracle?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35459884
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Author the new oneИдеальной - раз уж мы связались с хинтами - была бы фича сервера "давай мне запрос, возможно, с твоими хинтами, я тебе сейчас отдам такой же, но расхинтованный во всех подробностях, как я его буду делать, с учетом твоих хинтов, если они есть". Такой функционал, насколько мне известно, не реализован ни в одном сервере.В DB2 это называется explain facility (по-простому - получение плана запроса).
В плане запроса, может, и не идеально, но достаточно подробно указывается как и что оно будет с запросом делать.
Насколько я знаю, и в других серверах это есть.
Author the new oneНепосредственное. Вы смотрите на запрос, который ведет себя странно, делаете ему индекс, то-се, а он чхать на него хотел с прибором. Через два часа выясняется, что для него организован профайл. Смотрите на другой запрос с чудесами, еще два часа копаетесь в профайлах и ничего подходящего не находите... Оказывается, нет для него профайла, это он так, по случаю необычного распределения данных поехал.В плане запроса указывается , используется профиль или нет.
Если не используется, то можно определить почему .
Чтобы не тратить по 2 часа на выяснение, есть ли профиль для этого запроса или нет, можно документировать создание профилей.
Профили часто могут не распознаваться оптимизатором из-за того, что они требуют полного case-sensitive совпадения с оригиналом (исключая разницы в лишних символах пробела, табуляции, новой строки).
Author the new one Author the new oneВ оракле хинты расставляются очень легко и удобно, что провоцирует не разбираться, а по-быстрому указать хинт и не морочить себе голову.Согласен, что для разработчика - очень удобно.
А при эксплуатации - очень неудобно.Не знаю, не заметил.Конечно, пока вы и разработчик и пользователь - вы этого не заметите.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35460614
Author the new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa Author the new one
Ну, начнем с того, что я и писатель, и пользователь в одном лице, так что для меня это, например, не критично. Во-вторых, основная причина профилей, как мне кажется - нежелание разработчиков вносить всякие штуки-бяки в парсер, и потом их годами поддерживать. Идеальной - раз уж мы связались с хинтами - была бы фича сервера "давай мне запрос, возможно, с твоими хинтами, я тебе сейчас отдам такой же, но расхинтованный во всех подробностях, как я его буду делать, с учетом твоих хинтов, если они есть". Такой функционал, насколько мне известно, не реализован ни в одном сервере.

Что насчёт stored outlines и вьюшек *_outline_hints в Oracle?

Ну и где здесь запрос со вставленными хинтами? А нэту. Куда-то оно нагадило, оттуда и берет.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35460657
Author the new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 проблема аналогичная, иначе бы они аналогичный функционал бы не внедряли.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35460877
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Author the new oneВообще не очень понятно, что мне тут пытаются объяснить. Чисто пофлеймить?Я никогда не ввязываюсь в флеймы.
Практически все мои ответы - чисто технические.
Вероятно я не понял вашу фразу про оптимизатор: "давай мне запрос, возможно, с твоими хинтами, я тебе сейчас отдам такой же, но расхинтованный во всех подробностях, как я его буду делать, с учетом твоих хинтов, если они есть" - я понял её как то, что вы не нашли, как пользоваться visual explain в db2. Такое иногда бывает, ничего необычного здесь нет.
Также я думал, что у вас технические проблемы с тем, чтобы понять, используется ли профиль или нет. А что я должен был подумать, когда вы говорите о часах, потраченных на выяснение этого?
Если вы всё это знаете - простите. Может, другие почитают эту ветку и найдут ссылки, приведенные здесь, полезными.
Author the new oneКак я понимаю, у db2 проблема аналогичная, иначе бы они аналогичный функционал бы не внедряли.Долгое время ibm говорило, что у нас, мол, оптимизатор и так хороший, нам не надо хинтов. Но, видимо, заказчики в конце концов их убедили в обратном.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35461661
Author the new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinДолгое время ibm говорило, что у нас, мол, оптимизатор и так хороший, нам не надо хинтов.
И как Вы себе представляете обратное? "У нас оптимизатор отличный, но порой дурит, так что хинтов мы вам не дадим?" :-)

Mark BarinsteinНо, видимо, заказчики в конце концов их убедили в обратном.

Дык это ж абсолютно ясно. Судите сами: в тривиальном запросе

Код: plaintext
1.
2.
3.
4.
5.
6.
select t1.id from tbl1 t1, tbl t2 
  where 
        t1.col like '%пупкин%' 
  and t2.col='V1'
  and t1.id=t2.id
 optmize for  10  rows или как там в db2

я могу знать, что %пупкиных% в t1 для тех t2, у которых col='V1' как грязи и начинать надо с t2, а вот, скажем, %пипкиных% у меня, наоборот, с гулькин нос и начинать надо с t1. Этот пример первое, что пришло в голову; очень странно, что это само собой разумеющееся соображение столь упорно отрицалось. Кстати, от него еще более успешно отмахивается постгрес, что наводит на нехорошие мысли.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35461861
чя321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
за запросы с %% яйца отстреливать надо.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35461889
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чя321за запросы с %% яйца отстреливать надо.
Э-э-э... не надо быть таким категоричным.

К тому же в примере вместо like мог быть запрос с параметром.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35462254
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Author the new one
я могу знать, что %пупкиных% в t1 для тех t2, у которых col='V1' как грязи и начинать надо с t2, а вот, скажем, %пипкиных% у меня, наоборот, с гулькин нос и начинать надо с t1. Этот пример первое, что пришло в голову; очень странно, что это само собой разумеющееся соображение столь упорно отрицалось. Кстати, от него еще более успешно отмахивается постгрес, что наводит на нехорошие мысли.
А было такое, чтобы оптимизатор с соборанной статистикой, ошибался в селективности "пипкиных" и "V1"? Можете привести жизненный пример?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35462257
Serg0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чя321за запросы с %% яйца отстреливать надо.
интересное заявление, а сравните-ка такое, например, для DB2 AS400 V5R2M0:
f1 like '%pupkin'
и
substr(f1, LENGTH(f1)-6, 6)='pupkin'
(и про RIGHT не вспоминайте - нету его. если не путаю, то только в V5R3M0 появился)
я уже молчу, про очевидные случаи, когда без like просто не обойтись
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35462458
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
riman Author the new one
я могу знать, что %пупкиных% в t1 для тех t2, у которых col='V1' как грязи и начинать надо с t2, а вот, скажем, %пипкиных% у меня, наоборот, с гулькин нос и начинать надо с t1. Этот пример первое, что пришло в голову; очень странно, что это само собой разумеющееся соображение столь упорно отрицалось. Кстати, от него еще более успешно отмахивается постгрес, что наводит на нехорошие мысли.
А было такое, чтобы оптимизатор с соборанной статистикой, ошибался в селективности "пипкиных" и "V1"? Можете привести жизненный пример?

Не, ну лучше было приводить пример типа
Код: plaintext
1.
2.
3.
4.
5.
select t1.id from tbl1 t1, tbl t2 
  where 
        t1.col = ? 
  and t2.col = ?
  and t1.id=t2.id
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35462539
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg0 чя321за запросы с %% яйца отстреливать надо.
интересное заявление, а сравните-ка такое, например, для DB2 AS400 V5R2M0:
f1 like '%pupkin'
и
substr(f1, LENGTH(f1)-6, 6)='pupkin'
(и про RIGHT не вспоминайте - нету его. если не путаю, то только в V5R3M0 появился)
я уже молчу, про очевидные случаи, когда без like просто не обойтись
чя321 , надо полагать, имел в виду, что фамилию надо держать в отдельном поле и пользоваться f1 = 'pupkin' вместо приведённого выше. В данном конкретном случае и я так думаю, потому что это простой случай, но в общем... мы же живём в реальном мире и временами идём на компромиссы.

У Кайта я видел занятный примерчик на тему компромиссов. Юзер вводит произвольную строку, и она ищется в некоем справочнике, и это может содержаться в названии фирмы, или имени, или фамилии, или номере телефона, или в чём-то ещё - различий не делается. Люди пользуются этим поиском очень активно.

Самым лучшим, по словам Кайта, вариантом оказался самый тупой. Для справочника создали "индекс" - временную таблицу с двумя полями - в одном ссылка на строку справочника, в другом поле сконкатенировали поля той строки справочника. И поиск в этом при помощи like '%%'.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35462712
Author the new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa riman Author the new one
я могу знать, что %пупкиных% в t1 для тех t2, у которых col='V1' как грязи и начинать надо с t2, а вот, скажем, %пипкиных% у меня, наоборот, с гулькин нос и начинать надо с t1. Этот пример первое, что пришло в голову; очень странно, что это само собой разумеющееся соображение столь упорно отрицалось. Кстати, от него еще более успешно отмахивается постгрес, что наводит на нехорошие мысли.
А было такое, чтобы оптимизатор с соборанной статистикой, ошибался в селективности "пипкиных" и "V1"? Можете привести жизненный пример?

Не, ну лучше было приводить пример типа
Код: plaintext
1.
2.
3.
4.
5.
select t1.id from tbl1 t1, tbl t2 
  where 
        t1.col = ? 
  and t2.col = ?
  and t1.id=t2.id


Я, собственно, хотел привести подобный пример, но опасался неплодотворной дискуссии на тему "а вот сервер ведет статистику для каджой колонки", и для простоты взял случай, когда такой статистики заведомо нет. Промахнулся не хуже оптимизатора - в результате посыпались предложения "отстрелить яйца за like %%" и "не, ну бывает все-таки".
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35462970
Serg0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Author the new one Victor Metelitsa riman Author the new one
я могу знать, что %пупкиных% в t1 для тех t2, у которых col='V1' как грязи и начинать надо с t2, а вот, скажем, %пипкиных% у меня, наоборот, с гулькин нос и начинать надо с t1. Этот пример первое, что пришло в голову; очень странно, что это само собой разумеющееся соображение столь упорно отрицалось. Кстати, от него еще более успешно отмахивается постгрес, что наводит на нехорошие мысли.
А было такое, чтобы оптимизатор с соборанной статистикой, ошибался в селективности "пипкиных" и "V1"? Можете привести жизненный пример?

Не, ну лучше было приводить пример типа
Код: plaintext
1.
2.
3.
4.
5.
select t1.id from tbl1 t1, tbl t2 
  where 
        t1.col = ? 
  and t2.col = ?
  and t1.id=t2.id


Я, собственно, хотел привести подобный пример, но опасался неплодотворной дискуссии на тему "а вот сервер ведет статистику для каджой колонки", и для простоты взял случай, когда такой статистики заведомо нет. Промахнулся не хуже оптимизатора - в результате посыпались предложения "отстрелить яйца за like %%" и "не, ну бывает все-таки".

А вопрос-то от riman остался...
и сводится все к простой вещи - да, возможны ситуации, достаточно частные, когда оптимизатор сильно "гадит" и ручная оптимизация дала бы лучший результат.
НО это частности, а в общем? Не возможно вести статистику вместо сервера в голове программера и надеяться, что он знает, что с ней делать - посмотрите на это с точки зрения IBM или админа сервера для которого пишут сотни программеров самой разной квалификации.

Было бы здорово, уметь полностью отключать оптимизатор для отдельных запросов, но в качестве исключения!
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35462989
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Author the new oneЯ, собственно, хотел привести подобный пример, но опасался неплодотворной дискуссии на тему "а вот сервер ведет статистику для каджой колонки", и для простоты взял случай, когда такой статистики заведомо нет. Промахнулся не хуже оптимизатора - в результате посыпались предложения "отстрелить яйца за like %%" и "не, ну бывает все-таки".

Ну, ведёт, но будущее предвидеть всё равно не может. Ну, можно строить план по первому набору значений параметров или по каждому набору, что тоже зло. С другой стороны, у меня запросцы-то обычно посложнее будут, и их много, и если я буду заниматься хинтованием...
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35463031
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor MetelitsaНе, ну лучше было приводить пример типа
Код: plaintext
1.
2.
3.
4.
5.
select t1.id from tbl1 t1, tbl t2 
  where 
        t1.col = ? 
  and t2.col = ?
  and t1.id=t2.id
Если кому интересно, то для такого примера в db2 есть как раз oracle-like (в том смысле, что в тексте запроса пишется) хинт selectivity .
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35463074
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О!

Ну, это, конечно, должно быть покруче указания join order или index, но, когда я об этом вычитал, оно у меня почему-то не работало (якобы ошибка в синтаксисе; разумеется, я не забыл про db2set и фикспаки), поэтому я просто выкинул это из головы. Надо бы проверить на теперешней версии.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35463098
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinstein Victor MetelitsaНе, ну лучше было приводить пример типа
Код: plaintext
1.
2.
3.
4.
5.
select t1.id from tbl1 t1, tbl t2 
  where 
        t1.col = ? 
  and t2.col = ?
  and t1.id=t2.id
Если кому интересно, то для такого примера в db2 есть как раз oracle-like (в том смысле, что в тексте запроса пишется) хинт selectivity .

Прикольно. AS/400 как всегда обошли стороной, как я понял? :).
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35463187
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rimanПрикольно. AS/400 как всегда обошли стороной, как я понял? :).Оно там своей жизнью живет, иногда и весьма интересной.
Тут почитайте.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35463576
Author the new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa[quot Author the new one]Ну, ведёт, но будущее предвидеть всё равно не может. Ну, можно строить план по первому набору значений параметров или по каждому набору, что тоже зло. С другой стороны, у меня запросцы-то обычно посложнее будут, и их много, и если я буду заниматься хинтованием...
Ну никто и не говорит, что оптимизатор - это неизбывное зло, совсем наоборот. Но иногда он все делает как надо, но неправильно .
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35464140
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinОно там своей жизнью живет, иногда и весьма интересной.
Тут почитайте.
Спасибо! Давно ждал индексы по функциям - сбылась мечта идиота! :).
...
Рейтинг: 0 / 0
260 сообщений из 260, показаны все 11 страниц
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Интилигентность оптимайзера, база без хинтов - реальность?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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