|
|
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinНо, конечно, чтобы эту разницу увидеть, надо нагрузку соответствующего характера иметь. Безусловно, такую разницу нетрудно продемонстрировать на примере, но интересен вопрос степени актуальности в типичных задачах. Запрос попадает в Oracle следующим образом. Если у нас есть prepared statement, то, само собой, он замечательно используется. Если его нет, то в кэше сессии делается поиск совпадающего запроса (session cached cursors). Если там нет, в кэше запросов делается поиск плана, совпадающего по тексту запроса и контексту (текстуально одинаковые запросы могут иногда давать разные планы). Это называется soft parse. Если такой не найден, то собственно строится план - соответственно, hard parse. Разумеется, best practice сводится к избавлению от лишних parse. И если приложение написано в обычной разумной манере без наворотов, то разница между статикой и динамикой - это в общем-то разница между session cursors, в худшем случае sort parse и его отсутствием. Насколько и где эта картина отличается от DB2-шной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 15:43 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Victor MetelitsaЗапрос может пойти по неправильному плану, начать тормозить, Не может. Он не пойдёт работать по плану с Вашим индексом до тех пор, пока в тексте запроса не будет использован Ваш оператор ISNULL. Victor Metelitsaведь они найдут козла отпущения для своих собственных проблем. Не найдут. Это лучше спросить у Oracle DBA - я всё же несколько в стороне от подобных тем - но насколько я могу сходу оценить, если не давать разработчикам ненужных прав на вашем сервере, они этот индекс нигде никогда не увидят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 15:48 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
const64Прошу прощенья, что встреваю - но (если я правильно понял из предыдущих сообщений) почему, если DB2 не умеет создавать индексы по функциям - то это для DB2 очень плохо, а если Oracle не может создавать индексы по null полям - то это никому и не надо?да какая разница делайте выводы сами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 15:52 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
const64Прошу прощенья, что встреваю - но почему Не надо - потому что даже Виктор, которого это вроде как бесит, на вопрос "а для чего нужно-то" отвечает "ну я не знаю, какие будут запросы, может и понадобится". А чем плохо - (пожимая плечами) - да не знаю. При наличии вычислимых полей - можно жить. Разве что я посмотрел бы, не идёт ли в результате ненужного дублирования данных. Но с другой стороны, эти поля можно, наверное, выводить в select без перевычислений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 15:57 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
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.11.2010, 16:10 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein В статике у db2 в рантайме нет: - sort parse - hard parse - проверки авторизаций пользователя на все объекты (не забываем, что оракл тоже должен это делать), используемые в запросе. Проверяется только право execute на пакет, в котором хранятся все статические запросы программы. уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные. а тут какой план зашился с тем и жить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 16:34 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
softwarerconst64Прошу прощенья, что встреваю - но почему Не надо - потому что даже Виктор, которого это вроде как бесит, на вопрос "а для чего нужно-то" отвечает "ну я не знаю, какие будут запросы, может и понадобится". Уже не один раз надо было, подробности уже забыл, а недоумение помню. "user-defined индекс, к нему оператор ISNULL()" - это, вообще, в какой версии? Я не помню таких штук. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 16:36 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa "user-defined индекс, к нему оператор ISNULL()" - это, вообще, в какой версии? Я не помню таких штук. в восьмерке было, древней оракла я не застал ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 16:45 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Yo.!уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные. а тут какой план зашился с тем и жить.Если с изменением данных план не должен меняться, то оно, может, и хорошо, что план зашился. Но если хочется, то можено и rebind пакетам делать после обновления статистики. Никто не говорит, что static всегда лучше. Просто в db2 есть дополнительная возможность, которую можно использовать, можно нет. Про cost based оптимизатор - не понял, это к чему? В db2 он таким и был с древности. Или в оракле он более костистее? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 16:55 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
const64Прошу прощенья, что встреваю - но (если я правильно понял из предыдущих сообщений) почему, если DB2 не умеет создавать индексы по функциям - то это для DB2 очень плохо, а если Oracle не может создавать индексы по null полям - то это никому и не надо?Опупенная логика. А знак вопрос - это по ошибке, да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 17:01 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein Про cost based оптимизатор - не понял, это к чему? В db2 он таким и был с древности. Или в оракле он более костистее? :) если план не меняется в зависимости от собраной статистики имхо это скорее rule-based, но это мое имхо. кстати, то что в дб2 оптимизатор кост с древности распростроненное заблуждение. реально у оракла он появился раньше (есть пруф), а произошло это только в семерке, т.е. не так уж и давно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 17:05 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Yo.!Victor Metelitsa "user-defined индекс, к нему оператор ISNULL()" - это, вообще, в какой версии? Я не помню таких штук. в восьмерке было, древней оракла я не застал ... А можно примерчик? Может, я это под другим названием знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 17:08 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Yo.!Mark Barinstein Про cost based оптимизатор - не понял, это к чему? В db2 он таким и был с древности. Или в оракле он более костистее? :) если план не меняется в зависимости от собраной статистики имхо это скорее rule-based, но это мое имхо. кстати, то что в дб2 оптимизатор кост с древности распростроненное заблуждение. реально у оракла он появился раньше (есть пруф), а произошло это только в семерке, т.е. не так уж и давно. В DB2 2.1 for OS/2 cost-based оптимизатор был, rule-based оптимизатора не было, хинтов не было. Oracle 7 примерно этих же лет, что из них раньше - не помню, но народ изо всех сил старался держаться от их "cost-based" оптимизатора подальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 17:12 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Потом появился Oracle 8 и радостные статьи - ура, теперь cost-based-оптимизатором можно пользоваться. Недолго радовались, как я понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 17:15 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Yo.!кстати, то что в дб2 оптимизатор кост с древности распростроненное заблуждение. реально у оракла он появился раньше (есть пруф), а произошло это только в семерке, т.е. не так уж и давно.В моём пруфе оно появилось в 1983 (это если дедушку System R не считать): The Big Picture: IBM DB2 Information Management Software and DB2 Universal Database . Было бы интересно посмотреть на опровержение этого заблуждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 17:21 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Mark Barinsteinкроме session cached cursors (по крайней мере, я не знаю аналогов) Это по сути подтяжки для разработчиков, слишком ленивых, чтобы прочитать про prepared statements. Mark Barinsteinпроверки авторизаций пользователя на все объекты (не забываем, что оракл тоже должен это делать) Оракл делает это при hard parse и немного при soft parse (собственно, это и занимает основное время soft parse, насколько я понимаю). Ну то есть, собственно, как я и предполагал, вопрос сводится к сопоставлению prepared statement и динамики с вероятным soft parse и редким hard parse. Конечно, когда можно сработать "без потерь", статика лучше. Но, полагаю, не будет неправильным сказать, что статика хороша тогда и только тогда, когда в ней зашита обязательная сильная фильтрация, а переменная часть непринципиальна. В типичном случае даже простого фильтра - десяток условий, ни одно из которых не является обязательным - статика будет несравнимо больше проигрывать на этапе выполнения (cобственно, Oracle даже в этом случае пытается подстраивать планы под разные значения переменных, хотя до идеала тут ещё очень и очень далеко). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 17:29 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Yo.!уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные. а тут какой план зашился с тем и жить.Видимо, пережевывали недостаточно. При работе со статикой есть простое правило - после сбора статистики надо пересоздать планы статики (rebind). Достоинство в том, что эту операцию можно делать по необходимости, например в периоды низкой нагрузки. А если сбора статистики небыло, то и динамика со старой статистикой не будет новые планы генерячить, ибо не с чего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 17:37 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
softwarerНо, полагаю, не будет неправильным сказать, что статика хороша тогда и только тогда, когда в ней зашита обязательная сильная фильтрация, а переменная часть непринципиальна. В типичном случае даже простого фильтра - десяток условий, ни одно из которых не является обязательным - статика будет несравнимо больше проигрывать на этапе выполнения (cобственно, Oracle даже в этом случае пытается подстраивать планы под разные значения переменных, хотя до идеала тут ещё очень и очень далеко).Ну, в том примере, который я приводил, плпн доступа всегда одинаков - доступ по индексу gid. В общем, применение статике можно найти, и часто она действительно не подходит или не удобна в применении. В db2 есть, типа, бест практисиз для этого: Determining when to execute SQL statements statically or dynamically in embedded SQL applications ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 17:46 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinВ моём пруфе оно появилось в 1983 (это если дедушку System R не считать): The Big Picture: IBM DB2 Information Management Software and DB2 Universal Database . Было бы интересно посмотреть на опровержение этого заблуждения. не вижу, можно точную цитатку какую именно фразу вы приняли за "появилось" ? разбор ситуации по оптимизаторам лежит тут // http://www.dbmsmag.com/9703d15.html похоже загнулся журнальчик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 18:03 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
нашел в архиве 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.11.2010, 18:10 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
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.11.2010, 18:21 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
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 Там заявляется напрямую: IBMWe invented cost-based optimization for database management systems. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 18:48 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Очень интересно повспоминать, когда появился cost-based оптимизатор, но это жить воспоминаниями о прошлом. А как сейчас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 19:17 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
Yo.!Mark Barinstein В статике у db2 в рантайме нет: - sort parse - hard parse - проверки авторизаций пользователя на все объекты (не забываем, что оракл тоже должен это делать), используемые в запросе. Проверяется только право execute на пакет, в котором хранятся все статические запросы программы. уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные . а тут какой план зашился с тем и жить. В теории... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 19:41 |
|
||
|
Oracle XE: a five years of no progress
|
|||
|---|---|---|---|
|
#18+
пгуые123Очень интересно повспоминать, когда появился cost-based оптимизатор, но это жить воспоминаниями о прошлом. А как сейчас? Да, я тут некий примерчик просил, потому что перерываю ораклячью SQL reference и не понимаю, о чём шла речь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 20:02 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=36959908&tid=1552703]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 15ms |
| total: | 161ms |

| 0 / 0 |
