Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
stdioЧто значит "лучший"? Оптимизатор оценивает планы в неких виртуальных "попугаях" (С) Шин. Лучший в "попугаях" - возможно. Но почему можно утверждать, что этот план будет самым лучшим на работающей системе? Опять Вы за своё, хорошо, возможно Ваш план будет лучше. Но оптимизатор выберет лучший из рассмотренных им. Хотя чей план будет лучше это надо ещё проверить. Способны ли Вы сидеть круглые сутки и собирать постоянно статистику? Нет. Про "неверный" и "неосуществимый" вы меня уделали, здесь я пас.:) Adviser - это я так назвал утилиту для AS/400 - Visual Explain. Обычно она дает советы по оптимизации. ЗЫ. А где все DB2-ники? Я один, что ли лафу гоню на работе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:05 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
:) ViolinaКстати в Oracle 10g тоже появился родной SQL Tuning Advisor. И ИМХО в Oracle тоже все идет к тому, что статистика всегда должна быть собранной и автоматически поддерживается uptodate. Ну вот ещё не много и мы переманим Violin'y ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:08 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Ландно, теперь спрошу ка я у вас, уважаемые конкуренты. Я немного не понял про редо-журнал. По моим представлениям - это объекты в памяти, хранящие изменения в БД. Эти изменения периодически скидываются на диск, во время простоев или в т.п. ситуациях. А если произошел сбой в питании? Данные теряются что ли? Видимо я что то неправильно понял, но: ViolinaПоэтому redo журнал пишется очень быстро с одной стороны, с другой стороны нет необходимости скидывать изменные данные на диск именно сейчас. Oracle скидывает их по своему усмотрению, расномерно распределяя нагрузку по времени - еще не закомиченные данные могут быть скинуты на диск или наоборот закомиченные данные могут оставаться в памяти, пока Oracle не сочтет нужным их записать вот после этого я совсем смутился... Почему "не закомиченные данные скидываюдтся на диск, а "закомиченные" оставаться в памяти??? Очень необычно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:17 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
>ЗЫ. А где все DB2-ники? Я один, что ли лафу гоню на работе? Не ты один, я тож тут, коллега...:-) Наверно было бы полезным вывесить пару скриншотов из Explain-a ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:17 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
:)) 2 DB2-ника, гонящие лафу - это показатель. Ораклоидов (ораклистов) намного больше. :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:24 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
я не дибитушник щас...) я сайбэзист..) волею судеб.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:30 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2Stdio: По поводу того что оптимизатор думает ограниченное время. Не корректно db2advis утилита которой ты подсовываешь workload, ограничение на размер индексов, она передает это соответсвующим образом оптимизатору и он может думать над этим час, два как ты скажешь в конце выдает набор рекомендаций. Опять же можно играться с уровнем оптимизации очень помогает. Да конечно DB2 Optimizer не идеальный и бывают случаи когда надо немного менять схему, когда допустим в Oracle можно обойтись хинтом. Но в 99% случаев он свою работу делает хорошо. Насколько я знаю в 8.2 будет вещь сходная с HINTS только с моей точки зрения реализованная более красиво. Optimization profiles. Некоторый XML документ сужающий для оптимизатора список возможных вариантов оптимизации. Опятьже это делает администратор а не разработчик. Исходя из данных (знаний) которые оптимизатору могут быть не доступны P.S. Вышесказанное есть моя личная точка зрения и не может служить официальным заявлением компании IBM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:30 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Adviser and [Visual] Explain exist for DB2 UDB for U/W/L also. imho. Also there is "optimize for n rows" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:32 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
rimanНо оптимизатор выберет лучший из рассмотренных им. Вот с помощью хинтов оптимизатор и наводят на мысль, что, мол, друг, посмотри сюда, там тебе лучше будет... rimanЯ немного не понял про редо-журнал. По моим представлениям - это объекты в памяти, хранящие изменения в БД. Эти изменения периодически скидываются на диск, во время простоев или в т.п. ситуациях. А если произошел сбой в питании? Данные теряются что ли? Видимо я что то неправильно понял Поясню своими словами. На пальцах. Во время своей работы при изменениии содержимого БД, Oracle скидывает на диск данные. Этих данных достаточно для восстановления БД на момент failure. Поскольку по сути, работа БД это изменение блоков в файлах данных на диске, то в лог пишется старая версия блока и новая версия блока. В результате, за время работы образуется этакая "лента" из журналов. Имея файлы данных на определённый момент времени t0 и применив к ним накопившиеся журналы с этого "определённого" момента времени t0, мы можем восстановить состояние БД на любое время после t0. Nikolay KulikovПо поводу того что оптимизатор думает ограниченное время. Некорректно db2advis утилита которой ты подсовываешь workload, ограничение на размер индексов, она передает это соответсвующим образом оптимизатору и он может думать над этим час, два как ты скажешь в конце выдает набор рекомендаций. Опять же можно играться с уровнем оптимизации очень помогает db2advis != оптимизатор. Оптимизатор это набор внутренних средств БД, которые после передачи SQL-выражения (скажем, клиентской программой) выполняют его анализ и строят "стратегию" его выполнения. gardenmanНаверно было бы полезным вывесить пару скриншотов из Explain-a Да, конечно. _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 17:41 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Db2advis позволяет использовать весь описанный тобою набор процедур и структур для оптимизации нагрузки на CУБД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:09 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina! Поддай жару! ======== Я так думаю. Оптимизатор ДБ2 работает по принципу [ Rotor H + USE_NL], не зная, что есть и другие способы. Оракловский оптимизатор работает деиствительно как минимизатор маршрута к хранящимся данным, да и разнообразнее.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:09 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Щас мы все тут перегрыземся... Код: plaintext 1. 2. опять же копирайты чьи - то, не мои, источнику верить можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:18 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
извиняюсь, вот так удобнее читать: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:19 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to riman По моим представлениям - это объекты в памяти, хранящие изменения в БД. Эти изменения периодически скидываются на диск, во время простоев или в т.п. ситуациях. А если произошел сбой в питании? Данные теряются что ли? Видимо я что то неправильно понял Нет, есть непосредтвенно блоки данных и есть redo журнал, это две разные разницы. Реду журнал пишется постоянно и без кэширования, сразу на диск - в режиме O_SYNC. Успешность коммита подтверждается тогда и только тогда, когда все redo entries, относящиеся к транзакции, сброшены на диск. Совсем другая ситуация в отношении самих данных. Изменения в них нет необходимости записывать на диск сразу, например если произошел коммит, так и нет необходимости выжидать с записью, Oracle может сбрасывать измененые данные на диск, когда это сочтет нужным, тем самым устроняются узкие места и потенциальные ожидания в таких важных процессах как сброс данных на диск. Существует ряд параметров, позволяющих это поведение тьюнить в зависимости от требований приложения/доступности данных итп. В случае сбоя, по имеющимся redo журналам изменения в блоках данных несброшенные на диск (потерянные) восстанавливаютя путем наката redo журнала на файлы данных или непосредственно на блоки до момента непосредственно предшествующего сбою. См. также Advantages of the Fast COMMIT The fast commit mechanism ensures data recovery by writing changes to the redo log buffer instead of the data files. It has the following advantages: • Sequential writes to the log files are faster than writing to different blocks in the data file. • Only the minimal information that is necessary to record changes is written to the log files, whereas writing to the data files would require whole blocks of data to be written. • If multiple transactions request to commit at the same time, the instance piggybacks redo log records into a single write. • Unless the redo log buffer is particularly full, only one synchronous write is required per transaction. If piggybacking occurs, there can be less than one synchronous write per transaction. • Because the redo log buffer may be flushed before the COMMIT, the size of the transaction does not affect the amount of time needed for an actual COMMIT operation. Note: Rolling back a transaction does not trigger LGWR to write to disk. The Oracle server always rolls back uncommitted changes when recovering from failures. If there is a failure after a rollback, before the rollback entries are recorded on disk, the absence of a commit record is sufficient to ensure that the changes made by the transaction are rolled back. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:24 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to riman Both products can be used to build stable and efficient system and the stability ... Безусловно. У обеих баз есть свои сильные и слабые стороны. Мне просто было интересно узнать о них. Как я уже писала я действительно была впечатлена "спосбоностью" оптимайзера DB2, если он действительно такой умный. И, согласитесь, например метод реализации блокировок в Oracle при котором - не происходит эскалаций - чтение не блокирует запись - запись не блокирует чтение - чтение не накладывает блокировок вообще тоже заслуживает уважения. У меня еще вопрос, тоже несколько утрированный. Прошу не принимать его буквально. Слышала, что у DB2 настолько мощная SQL энджина, что необходимость во встроенном языке программировании практически отсутсвует. Если возможно, можно пару примерчиков, что (какие фичи) имеются в виду? Что можно сделать с пом. SQL, для чего в других языках понадобились бы процедцры и функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:36 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2Violina: вы думаете DB2, MS, Informix по другому пишут в Log и данные на диск? Я вас уверяю идеологически у всех почти все одно и тоже. Причем в DB2 это почти все с самого рождения в 1998 это уже точно все было. У Оracle в отличии от остальных надо писать еще в UNDO tablespaces. Что опять есть дополнительная нагрузка на IO. С другой стороны это плюс для выполнения отчетов по OLTP системе. 2Ora Xpert: Больше конструктивизма, лучше приводить примеры чем сотрясать воздух попусту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:39 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
DB2 CookBook http://ourworld.compuserve.com/homepages/Graeme_Birchall/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:46 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Nikolay Kulikov - plus an URL to a DB2 Information Center -> Reference -> SQL. imho. Violina - "если он действительно такой умный." it is. Try "search" at http://www.db2mag.com ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:51 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Nikolay Я вас уверяю идеологически у всех почти все одно и тоже. Иначе я и не думала. Трудно представить, как это могло бы быть сделано подругому. Просто riman спросил про redo, я ему ответила и указала на разницу работы с самими данными и с журналом. Вопрос опять же, в способах реализации механизма защиты/отката сделанных изменений. У Оracle в отличии от остальных надо писать еще в UNDO tablespaces. Что опять есть дополнительная нагрузка на IO. С другой стороны это плюс для выполнения отчетов по OLTP системе. Да, общий прирост в нагрузке на IO есть, но он частично компенсирован облегчением нагрузки на redo журнал. Откатывать транзакцию и восстанавливать версии данных на определенное состояние эффективнее/быстрее с пом. rollback segments чем проигрывая redo журнал в обратном направлении. rollback segments также цена за отсутстсвие блокировок при чтении/изменении. Классическая дилема - память/быстродейтвие. PS Ссылку посмотрю, может еще вопросы возникнут:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 18:57 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Эффективнее использовать UNDO вместо REDO в Oracle, не в DB2. Про то как DB2 пишет в журнал можно посмотреть в "Открытых системах" есть статья про ARIES семейство алгоритмов начально разработанных в IBM Research и используемых во многих системах для журналирования. Так же если есть желание можно за денюжку почитать на www.acm.org ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 19:16 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Nikolay Эффективнее использовать UNDO вместо REDO в Oracle, не в DB2. Не сомневаюсь. Естественно раз UNDO информация также лежит в журнале, оптимизация идет в направлении эффективного отката с пом. redo журнала. Я говорю о разделении следующих задач в Оракл - откат транзакций и получение before images и - защита(журнализация) изменений на случай сбоя целями которго являеются в частности - осутствие взаимных блокировок чтение/запись - избежание узких мест/конкуренции при записи в журнал в моменты массивных нагрузок. Другими словами минимизация объемов данных, которые должны быть записаны на диск немедленно и окончания записи которых необходимо обязательно дождаться. Ведь раз UNDO тоже пишется в REDO журнал, оно тоже должно гарантировано быть записано на диск на случай сбоя, чтобы откатить незакомиченные данные на момент сбоя. В Oracle этого делать не нужно, redo журналы для отката как такового не используются, но например измения в rollback segments также защищены redo журналом, так что они (измения в rbs) тоже могут быть записаны Ораклом тогда, когда он сочтет нужным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 19:32 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Насколько я знаю в 8.2 будет вещь сходная с HINTS только с моей точки зрения реализованная более красиво. Optimization profiles. Некоторый XML документ сужающий для оптимизатора список возможных вариантов оптимизации. Опятьже это делает администратор а не разработчик. Исходя из данных (знаний) которые оптимизатору могут быть не доступны В Oracle есть несколько похожая фича - execution plan outlines. Для Ораклоидов Вот нашла интересную статью про LEO http://www.citforum.ru/database/articles/leo.shtml SQL — декларативный язык, т. е. при его использовании требуется, чтобы пользователь указал только то, какие данные ему желательно получить , оставляя на долю оптимизатора запросов РСУБД принятие трудного решения о том, как лучше всего получить доступ к данным и обработать их. Производя мониторинг запросов при их выполнении, самонастраивающийся оптимизатор сравнивает свои оценки с реальной мощностью результата на каждом шаге QEP и вычисляет поправки для оценок. Эти поправки могут использоваться для оптимизации аналогичных запросов в будущем. Более того, обнаружение погрешностей оценок может инициировать повторную оптимизацию запроса в середине его выполнения. Непплохо в общем:) На первый взгляд впечатляет ... Создать точную картину как это на самом деле можно конечно, только действительно реально поработав с DB2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 21:44 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
ViolinaСлышала, что у DB2 настолько мощная SQL энджина, что необходимость во встроенном языке программировании практически отсутсвует. Действительно, на DB2 SQL можно написать процедуру аналогичную полноценому database-приложению, хотя мне больше нравится писать процедуры на Jave. Я где то читал, что PL/SQL у Oracle богаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 09:58 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to riman Действительно, на DB2 SQL можно написать процедуру аналогичную полноценому database-приложению, хотя мне больше нравится писать процедуры на Jave. Нее, я не имела в виду, встроенный язык программирования. У Oracle PL/SQL в этом отношении тоже не слабый. И также есть поддержка явы. Меня интересует именно чистый SQL, который якобы позволяет делать некоторые вещи, для которых в других СУБД пришлось бы прибегать к встроенному языку программирования. Как говорит Том Кайт - если можно, сделай это с помощью одного оператора SQL - если это невозможно, сделай это в PL/SQL - если это невозможно в PL/SQL, сделай это с помощью Java - если это невозможно с помощью Java, сделай внешнюю процедуру на С - если и это невозможно, надо серъезно подумать зачем это вообще нужно вот хотелось бы конкретный пример мощности чистого SQL. Так что пока не приведете пример, буду считать высказывание о SQL энджине мифом:) Я где то читал, что PL/SQL у Oracle богаче. Сравнить не могу, скажу что PL/SQL действительно полноценный многофункциональный язык. Например в PL/SQL есть триггреры на DDL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 11:28 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
было бы наивно считать что ИБМ создала универсальный оптимизатор ... как он работает немеряно доков на их сайте (причем на русском) Administration Guide: Performance ftp://ftp.software.ibm.com/ps/products/db2/info/vr8/pdf/letter/nlv/db2d3r80.pdf Visual Explain Tutorial ftp://ftp.software.ibm.com/ps/products/db2/info/vr8/pdf/letter/nlv/db2tvr80.pdf Индекс сдесь: http://www-306.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/v8pubs_trans.d2w/report оптимизатор (любой существующий) сам не может выбрать оптимальный план просто потому что не учитывает всю информацию (там например пишут что неучитывает дб2). например изменения нагрузки или типа доминирующих запрсов, оптимизатор не будет сам менять параметры сервера, например увиличивать себе область сортировки вечером когда идут восновном отчеты, а операторы спят. это может знать только дба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 11:55 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=32531417&tid=1603768]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 405ms |

| 0 / 0 |
