Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 [7] 8   вперед  Ctrl      все
 Re: Oracle XE: a five years of no progress  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67462
Блог
Mark Barinstein
Но, конечно, чтобы эту разницу увидеть, надо нагрузку соответствующего характера иметь.

Безусловно, такую разницу нетрудно продемонстрировать на примере, но интересен вопрос степени актуальности в типичных задачах.

Запрос попадает в Oracle следующим образом. Если у нас есть prepared statement, то, само собой, он замечательно используется. Если его нет, то в кэше сессии делается поиск совпадающего запроса (session cached cursors). Если там нет, в кэше запросов делается поиск плана, совпадающего по тексту запроса и контексту (текстуально одинаковые запросы могут иногда давать разные планы). Это называется soft parse. Если такой не найден, то собственно строится план - соответственно, hard parse. Разумеется, best practice сводится к избавлению от лишних parse. И если приложение написано в обычной разумной манере без наворотов, то разница между статикой и динамикой - это в общем-то разница между session cursors, в худшем случае sort parse и его отсутствием.

Насколько и где эта картина отличается от DB2-шной?
16 ноя 10, 15:43    [9788417]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67462
Блог
Victor Metelitsa
Запрос может пойти по неправильному плану, начать тормозить,

Не может. Он не пойдёт работать по плану с Вашим индексом до тех пор, пока в тексте запроса не будет использован Ваш оператор ISNULL.

Victor Metelitsa
ведь они найдут козла отпущения для своих собственных проблем.

Не найдут. Это лучше спросить у Oracle DBA - я всё же несколько в стороне от подобных тем - но насколько я могу сходу оценить, если не давать разработчикам ненужных прав на вашем сервере, они этот индекс нигде никогда не увидят.
16 ноя 10, 15:48    [9788457]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
const64
Прошу прощенья, что встреваю - но (если я правильно понял из предыдущих сообщений) почему, если DB2 не умеет создавать индексы по функциям - то это для DB2 очень плохо, а если Oracle не может создавать индексы по null полям - то это никому и не надо?
да какая разница
делайте выводы сами
16 ноя 10, 15:52    [9788506]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67462
Блог
const64
Прошу прощенья, что встреваю - но почему

Не надо - потому что даже Виктор, которого это вроде как бесит, на вопрос "а для чего нужно-то" отвечает "ну я не знаю, какие будут запросы, может и понадобится". А чем плохо - (пожимая плечами) - да не знаю. При наличии вычислимых полей - можно жить. Разве что я посмотрел бы, не идёт ли в результате ненужного дублирования данных. Но с другой стороны, эти поля можно, наверное, выводить в select без перевычислений.
16 ноя 10, 15:57    [9788580]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 5032
softwarer
Запрос попадает в Oracle следующим образом. Если у нас есть prepared statement, то, само собой, он замечательно используется. Если его нет, то в кэше сессии делается поиск совпадающего запроса (session cached cursors). Если там нет, в кэше запросов делается поиск плана, совпадающего по тексту запроса и контексту (текстуально одинаковые запросы могут иногда давать разные планы). Это называется soft parse. Если такой не найден, то собственно строится план - соответственно, hard parse. Разумеется, best practice сводится к избавлению от лишних parse. И если приложение написано в обычной разумной манере без наворотов, то разница между статикой и динамикой - это в общем-то разница между session cursors, в худшем случае sort parse и его отсутствием.

Насколько и где эта картина отличается от DB2-шной?
В динамике у db2 практически то же самое, кроме session cached cursors (по крайней мере, я не знаю аналогов).

В статике у db2 в рантайме нет:
- sort parse
- hard parse
- проверки авторизаций пользователя на все объекты (не забываем, что оракл тоже должен это делать), используемые в запросе. Проверяется только право execute на пакет, в котором хранятся все статические запросы программы.

В статике в db2 план запроса строится при прекомпиляции и получает некий id, по которому он в рантайме находится в системном каталоге или кэше статических запросов.
16 ноя 10, 16:10    [9788739]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
Mark Barinstein

В статике у db2 в рантайме нет:
- sort parse
- hard parse
- проверки авторизаций пользователя на все объекты (не забываем, что оракл тоже должен это делать), используемые в запросе. Проверяется только право execute на пакет, в котором хранятся все статические запросы программы.

уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные. а тут какой план зашился с тем и жить.
16 ноя 10, 16:34    [9789027]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2559
softwarer
const64
Прошу прощенья, что встреваю - но почему

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


Уже не один раз надо было, подробности уже забыл, а недоумение помню.

"user-defined индекс, к нему оператор ISNULL()" - это, вообще, в какой версии? Я не помню таких штук.
16 ноя 10, 16:36    [9789049]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
Victor Metelitsa

"user-defined индекс, к нему оператор ISNULL()" - это, вообще, в какой версии? Я не помню таких штук.

в восьмерке было, древней оракла я не застал ...
16 ноя 10, 16:45    [9789152]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 5032
Yo.!
уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные. а тут какой план зашился с тем и жить.
Если с изменением данных план не должен меняться, то оно, может, и хорошо, что план зашился.
Но если хочется, то можено и rebind пакетам делать после обновления статистики.
Никто не говорит, что static всегда лучше.
Просто в db2 есть дополнительная возможность, которую можно использовать, можно нет.

Про cost based оптимизатор - не понял, это к чему?
В db2 он таким и был с древности.
Или в оракле он более костистее? :)
16 ноя 10, 16:55    [9789265]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
const64
Прошу прощенья, что встреваю - но (если я правильно понял из предыдущих сообщений) почему, если DB2 не умеет создавать индексы по функциям - то это для DB2 очень плохо, а если Oracle не может создавать индексы по null полям - то это никому и не надо?
Опупенная логика. А знак вопрос - это по ошибке, да?
16 ноя 10, 17:01    [9789329]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
Mark Barinstein

Про cost based оптимизатор - не понял, это к чему?
В db2 он таким и был с древности.
Или в оракле он более костистее? :)

если план не меняется в зависимости от собраной статистики имхо это скорее rule-based, но это мое имхо.
кстати, то что в дб2 оптимизатор кост с древности распростроненное заблуждение. реально у оракла он появился раньше (есть пруф), а произошло это только в семерке, т.е. не так уж и давно.
16 ноя 10, 17:05    [9789368]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2559
Yo.!
Victor Metelitsa

"user-defined индекс, к нему оператор ISNULL()" - это, вообще, в какой версии? Я не помню таких штук.

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

А можно примерчик? Может, я это под другим названием знаю.
16 ноя 10, 17:08    [9789403]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2559
Yo.!
Mark Barinstein

Про cost based оптимизатор - не понял, это к чему?
В db2 он таким и был с древности.
Или в оракле он более костистее? :)

если план не меняется в зависимости от собраной статистики имхо это скорее rule-based, но это мое имхо.
кстати, то что в дб2 оптимизатор кост с древности распростроненное заблуждение. реально у оракла он появился раньше (есть пруф), а произошло это только в семерке, т.е. не так уж и давно.

В DB2 2.1 for OS/2 cost-based оптимизатор был, rule-based оптимизатора не было, хинтов не было. Oracle 7 примерно этих же лет, что из них раньше - не помню, но народ изо всех сил старался держаться от их "cost-based" оптимизатора подальше.
16 ноя 10, 17:12    [9789458]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2559
Потом появился Oracle 8 и радостные статьи - ура, теперь cost-based-оптимизатором можно пользоваться. Недолго радовались, как я понимаю.
16 ноя 10, 17:15    [9789489]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 5032
Yo.!
кстати, то что в дб2 оптимизатор кост с древности распростроненное заблуждение. реально у оракла он появился раньше (есть пруф), а произошло это только в семерке, т.е. не так уж и давно.
В моём пруфе оно появилось в 1983 (это если дедушку System R не считать):
The Big Picture: IBM DB2 Information Management Software and DB2 Universal Database.
Было бы интересно посмотреть на опровержение этого заблуждения.
16 ноя 10, 17:21    [9789558]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67462
Блог
Mark Barinstein
кроме session cached cursors (по крайней мере, я не знаю аналогов)

Это по сути подтяжки для разработчиков, слишком ленивых, чтобы прочитать про prepared statements.

Mark Barinstein
проверки авторизаций пользователя на все объекты (не забываем, что оракл тоже должен это делать)

Оракл делает это при hard parse и немного при soft parse (собственно, это и занимает основное время soft parse, насколько я понимаю).

Ну то есть, собственно, как я и предполагал, вопрос сводится к сопоставлению prepared statement и динамики с вероятным soft parse и редким hard parse. Конечно, когда можно сработать "без потерь", статика лучше. Но, полагаю, не будет неправильным сказать, что статика хороша тогда и только тогда, когда в ней зашита обязательная сильная фильтрация, а переменная часть непринципиальна. В типичном случае даже простого фильтра - десяток условий, ни одно из которых не является обязательным - статика будет несравнимо больше проигрывать на этапе выполнения (cобственно, Oracle даже в этом случае пытается подстраивать планы под разные значения переменных, хотя до идеала тут ещё очень и очень далеко).
16 ноя 10, 17:29    [9789648]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Favn
Member

Откуда:
Сообщений: 585
Yo.!
уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные. а тут какой план зашился с тем и жить.
Видимо, пережевывали недостаточно. При работе со статикой есть простое правило - после сбора статистики надо пересоздать планы статики (rebind).
Достоинство в том, что эту операцию можно делать по необходимости, например в периоды низкой нагрузки. А если сбора статистики небыло, то и динамика со старой статистикой не будет новые планы генерячить, ибо не с чего.
16 ноя 10, 17:37    [9789734]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 5032
softwarer
Но, полагаю, не будет неправильным сказать, что статика хороша тогда и только тогда, когда в ней зашита обязательная сильная фильтрация, а переменная часть непринципиальна. В типичном случае даже простого фильтра - десяток условий, ни одно из которых не является обязательным - статика будет несравнимо больше проигрывать на этапе выполнения (cобственно, Oracle даже в этом случае пытается подстраивать планы под разные значения переменных, хотя до идеала тут ещё очень и очень далеко).
Ну, в том примере, который я приводил, плпн доступа всегда одинаков - доступ по индексу gid.
В общем, применение статике можно найти, и часто она действительно не подходит или не удобна в применении.
В db2 есть, типа, бест практисиз для этого:
Determining when to execute SQL statements statically or dynamically in embedded SQL applications
16 ноя 10, 17:46    [9789839]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
Mark Barinstein
В моём пруфе оно появилось в 1983 (это если дедушку System R не считать):
The Big Picture: IBM DB2 Information Management Software and DB2 Universal Database.
Было бы интересно посмотреть на опровержение этого заблуждения.

не вижу, можно точную цитатку какую именно фразу вы приняли за "появилось" ?

разбор ситуации по оптимизаторам лежит тут
//http://www.dbmsmag.com/9703d15.html

похоже загнулся журнальчик.
16 ноя 10, 18:03    [9790055]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
нашел в архиве

dbsmag

Over the last few years, especially as the market trend for data warehousing has really caught on, database vendors have put a great deal of focus on optimizer development. Oracle introduced its cost-based optimizer in Oracle 7.0 and is phasing out the use of rule-based optimization in its product. Gary Hallmark, consulting member of technical staff who focuses primarily on data warehouse issues at Oracle, sees the cost-based optimizer as a key component of Oracle's data warehouse solution with specific features that allow for exploitation of star schema designs, bitmapped indices, and parallel-processing capabilities available with the Oracle Parallel Query option. Hallmark emphasizes the importance of a number of optimization improvements introduced with Oracle 7.3, including "parallel aware'' optimization strategies that enable the optimizer to use parallelism in its execution plans to trade system throughput for better response times on individual queries. Oracle 7.3 also introduced histogrammed statistics for use by the optimizer for better plan generation when skewed data is present within large database tables. The quality of plans generated by Oracle's cost-based optimizer have increased dramatically between Oracle 7.0 and the current 7.3 version of the product, and even further enhancements are expected with the release of Oracle8 later this year.

IBM expects to integrate its advanced research in cost optimization strategies coming out of the Starburst project (undertaken in IBM's Almaden research laboratories in California) into both the MVS and Unix implementations of the DB2 database product. Gilles Fecteau, architect of DB2/6000 Parallel Edition, indicates that customers for this high-end database focused on DSS workloads should see the benefits of the Starburst research in the Common Server implementation of DB2 as early as the first half of 1997. Because the research prototype for IBM's optimizer technology was developed in C++, it will be a much faster path for integrating the advancements into DB2's Common Server database engine (which is also implemented in C++) than will be the case for DB2 on MVS (which is implemented in assembler and PL/X-390).

//http://web.archive.org/web/20071009200716/http://www.dbmsmag.com/9703d15.html

это 1997 год, т.е. os/2 где в это время и подохла ...
16 ноя 10, 18:10    [9790120]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 5032
Yo.!
Mark Barinstein
В моём пруфе оно появилось в 1983 (это если дедушку System R не считать):
The Big Picture: IBM DB2 Information Management Software and DB2 Universal Database.
Было бы интересно посмотреть на опровержение этого заблуждения.

не вижу, можно точную цитатку какую именно фразу вы приняли за "появилось" ?

разбор ситуации по оптимизаторам лежит тут
//http://www.dbmsmag.com/9703d15.html

похоже загнулся журнальчик.


A brief history of DB2

A series of research projects have been a steady source of technology for the DB2 family since the beginning:
...
* Cost-based query optimization has been an area of intense effort and innovation ever since the System R days. The R Star project extended the relational model to distributed system environments.
...
Смысл следующий:
Cost-based optimizer, появившийся в System R, стал источником технологий для DB2 с самого её начала.
Как ещё по-другому можно интерпретировать эти фразы?
16 ноя 10, 18:21    [9790191]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 5032
dbmag

IBM expects to integrate its advanced research in cost optimization strategies coming out of the Starburst project (undertaken in IBM's Almaden research laboratories in California) into both the MVS and Unix implementations of the DB2 database product.
Здесь нигде не сказано, что было у db2 rule-based, и после внедрения advanced research оно стало cost-based.
Дословно: "Ожидается, что IBM интегриует своё передовое исследование в cost optimization strategies".
Как из этого можно было заключить, что было rule-based, а ожидается cost-based?

Вот ещё самоуверенные заявления ibm (там в т.ч. и про cost-based есть)
DB2 Leadership in Business Intelligence
Там заявляется напрямую:
IBM
We invented cost-based optimization for database management systems.
16 ноя 10, 18:48    [9790352]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
пгуые123
Guest
Очень интересно повспоминать, когда появился cost-based оптимизатор, но это жить воспоминаниями о прошлом. А как сейчас?
16 ноя 10, 19:17    [9790464]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3910
Yo.!
Mark Barinstein

В статике у db2 в рантайме нет:
- sort parse
- hard parse
- проверки авторизаций пользователя на все объекты (не забываем, что оракл тоже должен это делать), используемые в запросе. Проверяется только право execute на пакет, в котором хранятся все статические запросы программы.

уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные. а тут какой план зашился с тем и жить.

В теории...
16 ноя 10, 19:41    [9790548]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2559
пгуые123
Очень интересно повспоминать, когда появился cost-based оптимизатор, но это жить воспоминаниями о прошлом. А как сейчас?

Да, я тут некий примерчик просил, потому что перерываю ораклячью SQL reference и не понимаю, о чём шла речь.
16 ноя 10, 20:02    [9790613]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 [7] 8   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить