|
хумор
|
|||
---|---|---|---|
#18+
Ну, порадовал, Денис. Уел всех :) Интересно, какие будут дальнейшие комменты :) А бенчмарк, действительно , забавный. Надо будет тоже попробовать на более старых версиях IDS. Кстати, а SET OPTIMIZATION или OPT_GOAL использовался ? Если нет, то я в очередной раз "снимаю шляпу". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2007, 18:22 |
|
хумор
|
|||
---|---|---|---|
#18+
Журавлев ДенисКлассный пипискамер. да уж, дал повод позавидовать народу... :)) ЗЫ. IBM Informix Dynamic Server Version 7.31.UD8 - за 1,8 сек. IBM Informix Dynamic Server Version 9.40.UC8 - за 2,1 сек. пень 4й. ЗЫЫ. Кста, с хинтом ORDERED оба сервера "задумались о вечном"... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2007, 18:26 |
|
хумор
|
|||
---|---|---|---|
#18+
vasilisНадо будет тоже попробовать на более старых версиях IDS. Попробовал. Informix Dynamic Server Version 9.30.TC2 -- On-Line -- Up 01:26:25 -- 25472 Kbytes 7-летней давности Виндовая версия - мгновенное выполнение на старом Athlon 1.4Ghz даже странно, чего у Оракла мозги оптимизатору заклинило... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2007, 21:05 |
|
хумор
|
|||
---|---|---|---|
#18+
Hi С уважением отношусь к ix. Так справедливости ради, то что он нашел план быстрее не означает, что запрос исполнился быстрее на "серьезных" данных. Я об соотношении parsing/execution/fetching. Как гооворится, лучше день потерять, зато потом за час долететь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2007, 21:49 |
|
хумор
|
|||
---|---|---|---|
#18+
Курьезный случай вообще говоря, оптимизатор оракла задумывается, оптимизатор информикса мгновенно строит хороший план. Попробую разобраться с планами и потрассировать оракловый cbo. select {+explain, avoid_execute} real 0m0.148s set optimization low; select {+explain, avoid_execute} real 0m0.136s set optimization low; select {+explain} real 0m9.117s ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2007, 08:47 |
|
хумор
|
|||
---|---|---|---|
#18+
Relic HunterHi С уважением отношусь к ix. Так справедливости ради, то что он нашел план быстрее не означает, что запрос исполнился быстрее на "серьезных" данных. Я об соотношении parsing/execution/fetching. Как гооворится, лучше день потерять, зато потом за час долететь :)проблемы информикса лежат несколько в перпендикулярной плоскости. Например в оракле мне притаскивают запрос (обычно запрос несколько сложнее таблиц так на 20 и с пятью коррелированными exists, (встречу проектировщика -- убью тупым топором)): select * from a,b where a.f0=7 and a.f1=b.f1 and func1(a.f3)=0 Возвращает 100 строк Работает 10 мин, комментирую последний предикат - 0 сек. Т.е. порядок применения предикатов, функцию надо применить в конце, постджойн. Я делаю очень просто: select * from (select * from a,b where a.f0=7 and a.f1=b.f1 and rownum>0 -- не даем оптимизатору возможности сделать merge, и push_predicate) where func1(a.f3)=0 В информиксе пришлось бы писать через временные таблицы, и в итоге бы исполнялось 1 сек. Т.е. в информиксе просто нет понятий view merge, predicate pushing, predicate pruning (хотя может оно и есть где-то внутрях). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2007, 08:58 |
|
хумор
|
|||
---|---|---|---|
#18+
Relic HunterHi С уважением отношусь к ix. Так справедливости ради, то что он нашел план быстрее не означает, что запрос исполнился быстрее на "серьезных" данных. Я об соотношении parsing/execution/fetching. Как гооворится, лучше день потерять, зато потом за час долететь :) Со своей стороны ( имея практику администрирования похожих систем ) на Oracle & Informix могу сказать что execution/fetching Informix делает быстрее, по причине архитектурных особенностей (асинхроное чтение, отсутствие слотов транзакций в страницах данных, конвееры агрегирования и сортировки). p.s. При всем моем уважении к Oracle. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2007, 11:29 |
|
хумор
|
|||
---|---|---|---|
#18+
Поигрался с ораклом 10.2.0.1.0, план строится за 18 сек, исполняется 0.1 сек. В плане проходы по индексу, правда ffs. Трассировка показала что рассматривает 1348 permutations (_optimizer_max_permutations = 2000), видимо из-за дикого числа предикатов, каждая рассматривается немеряное кол-во времени, причем рассматриваются такие join methods и access methods, которых в информиксе просто не существует, плюс стоимость анализируется по двум показателям io и cpu, а не по одному. Убирание индексов и или сбор статистики только ухудшают положение. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2007, 16:44 |
|
хумор
|
|||
---|---|---|---|
#18+
Благо у Оракла есть т.н. "stored outline", т.е. можно закрепить план выполнения для запроса в системных таблицах. В таком случае повторного hardparse уже не будет :). А так-бы пришлось заганять все в хранимки. П.С. Вопрос и информиксам. Как у вас обстоят дела с возвращением результирующего набора из процедуры, это возможно? У MSSQL есть рекордсет, у Оракла реф.курсор и pipelined finctions. Что-то есть похожее тут? Журавлев ДенисПоигрался с ораклом 10.2.0.1.0, план строится за 18 сек, исполняется 0.1 сек. В плане проходы по индексу, правда ffs. Трассировка показала что рассматривает 1348 permutations (_optimizer_max_permutations = 2000), видимо из-за дикого числа предикатов, каждая рассматривается немеряное кол-во времени, причем рассматриваются такие join methods и access methods, которых в информиксе просто не существует, плюс стоимость анализируется по двум показателям io и cpu, а не по одному. Убирание индексов и или сбор статистики только ухудшают положение. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2007, 17:23 |
|
хумор
|
|||
---|---|---|---|
#18+
Relic HunterВопрос и информиксам. Как у вас обстоят дела с возвращением результирующего набора из процедуры, это возможно? У MSSQL есть рекордсет, у Оракла реф.курсор и pipelined finctions. Что-то есть похожее тут? Каким образом можно вернуть выборку из хранимой процедуры ? RETURN WITH RESUME ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2007, 17:36 |
|
хумор
|
|||
---|---|---|---|
#18+
Relic HunterБлаго у Оракла есть т.н. "stored outline", т.е. можно закрепить план выполнения для запроса в системных таблицах. В таком случае повторного hardparse уже не будет :). А так-бы пришлось заганять все в хранимки.Я вам щас сикрет открою: информикс делает хардпарс в момент когда узнает значение бинд переменной препаренного курсора, т.е. каждый курсор хардпарсится, но так как время парса НИЧТОЖНО мало, это никого не парит. Лет пять назад информикс научился кешировать планы запросов, так вот этой фичей выключенной по умолчанию, никто не пользуется. Это большой плюс и настолько же большой минус информикса. А еще у информикса только MTS, dedicated отменили 20 лет назад. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2007, 17:45 |
|
хумор
|
|||
---|---|---|---|
#18+
Журавлев ДенисЯ вам щас сикрет открою: информикс делает хардпарс в момент когда узнает значение бинд переменной препаренного курсора, т.е. каждый курсор хардпарсится, но так как время парса НИЧТОЖНО малоКак это им удалось? У Оракла есть Shared Pool, у MSSQL такого нету, поэтому "strongly recomended" заганять даже простые селекты в хранимки, чтобы "почки" серверу не посадить :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2007, 17:59 |
|
хумор
|
|||
---|---|---|---|
#18+
Relic HunterКак это им удалось? У Оракла есть Shared Pool, у MSSQL такого нету, поэтому "strongly recomended" заганять даже простые селекты в хранимки, чтобы "почки" серверу не посадить :) По сравнению sql синтаксимом оракла, синтаксис informix беден. Поэтому модель оптимизатора вероятно сильно проще, во вторых на курсах рассказывали байку что когда для 9-го информикса оптимизатор переписали с С на С++, стало сильно прозрачней и лучше, в третих нет извратов merge/sort join, iffs, т.е. у оптимизатора сильно меньше вариантов планов, в четвертых уже лет 15 всегда используются гистограммы, но самое простое объяснение что модель cbo нарисовал более сильный математик. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2007, 18:09 |
|
хумор
|
|||
---|---|---|---|
#18+
Вот столько вот дней без перезагрузки!!! Никакого фотошопа - честное пионерское. Единственное что могу сказать, что этот тестовый IDS работает на VMware. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2007, 10:48 |
|
хумор
|
|||
---|---|---|---|
#18+
Несложный расчет: 49709 / 365 = ~ 136 лет. А я думал, что компьютеры гораздо моложе. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2007, 11:38 |
|
хумор
|
|||
---|---|---|---|
#18+
Журавлев Денисна курсах рассказывали байку что когда для 9-го информикса оптимизатор переписали с С на С++, стало сильно прозрачней и лучше Нет никакого C++ внутре информикса. Там у нее неонка в виде чистого С. Это я тебе, голуба, говорю как краевед. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2007, 20:14 |
|
хумор
|
|||
---|---|---|---|
#18+
:) Наверное на курсах с прямым углом перепутали, informix c++ csdk. Выбегалло Журавлев Денисна курсах рассказывали байку что когда для 9-го информикса оптимизатор переписали с С на С++, стало сильно прозрачней и лучше Нет никакого C++ внутре информикса. Там у нее неонка в виде чистого С. Это я тебе, голуба, говорю как краевед. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2007, 20:59 |
|
хумор
|
|||
---|---|---|---|
#18+
Relic Hunter:) Наверное на курсах с прямым углом перепутали, informix c++ csdk. ...Речь про оптимизатор шла. Но было это давно в 01 году, может мне приснилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2007, 08:42 |
|
хумор
|
|||
---|---|---|---|
#18+
Выбегалло Журавлев Денисна курсах рассказывали байку что когда для 9-го информикса оптимизатор переписали с С на С++, стало сильно прозрачней и лучше Нет никакого C++ внутре информикса. Там у нее неонка в виде чистого С. Это я тебе, голуба, говорю как краевед. Николай говорил , что содержание в єтой неонке чистого С только 80%. Интересно, что есть остальные 20%. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2007, 12:35 |
|
хумор
|
|||
---|---|---|---|
#18+
Одно на ум приходит -- АСМ :) onstat-Николай говорил , что содержание в єтой неонке чистого С только 80%. Интересно, что есть остальные 20%. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2007, 17:25 |
|
хумор
|
|||
---|---|---|---|
#18+
onstat- Выбегалло Журавлев Денисна курсах рассказывали байку что когда для 9-го информикса оптимизатор переписали с С на С++, стало сильно прозрачней и лучше Нет никакого C++ внутре информикса. Там у нее неонка в виде чистого С. Это я тебе, голуба, говорю как краевед. Николай говорил , что содержание в єтой неонке чистого С только 80%. Интересно, что есть остальные 20%. Николай, насколько я помню, занимается в основном DB2. Эта да, имеет внутре достаточно много C++ кода. В Informix engine С++ не было - и это была принципиальная позиция, чтобы не трахаться с несовместимостями компиляторов под разные платформы. Несовместимостей хватало в древнем и сто раз застандартизованном С, который к тому же работает быстрее - незачем усугублять ситуацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2007, 23:26 |
|
хумор
|
|||
---|---|---|---|
#18+
Relic HunterОдно на ум приходит -- АСМ :) onstat-Николай говорил , что содержание в єтой неонке чистого С только 80%. Интересно, что есть остальные 20%. Не думаю, поковырявшись в DSA, я не нашел критичных мест, где бы была необходимость использовать АСМ. Учитывая то, что мотор с нуля переписан в 1991-1993 годах, когда С++ был очень слабо стандартизован, я согласен г-ном Выбегалло что нам действительно чистый С. Так же использование С++ затрудняется тем, что при созданнии полиморфных классов в разделяемой памяти Unix имеются проблемы с вызовами виртуалюных методов из разных программ (oninit, onmode, ontape) . Это кстате одна из причин, по которым приостановилась работа и над проектом OpenDSA. Поняв что изобретать велосиед дело не благодарное, я, по помере наличия свободного времени, разбираюсь с интерфейсом OpenMP , дабы помимо всего прочего закрыть вопросы платформонезависимости ядра. Если хватит времени воплотить все имеющиеся идеи, получится очень даже хороший мотор. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 12:51 |
|
хумор
|
|||
---|---|---|---|
#18+
onstat- Relic HunterОдно на ум приходит -- АСМ :) onstat-Николай говорил , что содержание в єтой неонке чистого С только 80%. Интересно, что есть остальные 20%. Не думаю, поковырявшись в DSA, я не нашел критичных мест, где бы была необходимость использовать АСМ. ACM там используется в очень тонком слое, занимающемся низкоуровневыми операциями на разном железе. Навскидку помню только реализацию переключения нитей, которая должна быть атомарной для процессора. У каждой платформы за это отвечает своя команда на ассемблере. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 20:33 |
|
хумор
|
|||
---|---|---|---|
#18+
Выбегалло onstat- Relic HunterОдно на ум приходит -- АСМ :) onstat-Николай говорил , что содержание в єтой неонке чистого С только 80%. Интересно, что есть остальные 20%. Не думаю, поковырявшись в DSA, я не нашел критичных мест, где бы была необходимость использовать АСМ. ACM там используется в очень тонком слое, занимающемся низкоуровневыми операциями на разном железе. Навскидку помню только реализацию переключения нитей, которая должна быть атомарной для процессора. У каждой платформы за это отвечает своя команда на ассемблере. Нить informix и нить ОС (pthread) это абсолютно разные вещи. Переключение нитей в informix на контекст процесса(ОС) не влияют, они атомарны по умолчанию. А несколько нитей informix могут выполняться последовательно в одном контексте 1-го процесса(ОС). А согласование паралельного выполнения нитей informix на разных процессорах( VP ) решается с помошью системных вызовов ОС и управлющих структур(thread-control block (TCB)) в разделяемой памяти сервера Informix. И асемблер там никчему ИМХО. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2007, 11:51 |
|
хумор
|
|||
---|---|---|---|
#18+
особенно интересно ваша дискуссия смотрится под заголовком "ХУМОР" :)) Вы бы хоть топик сменили, что ли... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2007, 15:06 |
|
хумор
|
|||
---|---|---|---|
#18+
vasilisособенно интересно ваша дискуссия смотрится под заголовком "ХУМОР" :)) Вы бы хоть топик сменили, что ли... Тему завел, переходим сюда . ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2007, 15:59 |
|
хумор
|
|||
---|---|---|---|
#18+
Еще один Informix Интересно? они хоть в курсе, что такое Informix? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2009, 16:08 |
|
хумор
|
|||
---|---|---|---|
#18+
ООО “Информикс”, 2009 Все права защищены Это вам не это. (с) ДМБ ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2009, 17:45 |
|
хумор
|
|||
---|---|---|---|
#18+
Журавлев ДенисRelic HunterHi С уважением отношусь к ix. Так справедливости ради, то что он нашел план быстрее не означает, что запрос исполнился быстрее на "серьезных" данных. Я об соотношении parsing/execution/fetching. Как гооворится, лучше день потерять, зато потом за час долететь :)проблемы информикса лежат несколько в перпендикулярной плоскости. Например в оракле мне притаскивают запрос (обычно запрос несколько сложнее таблиц так на 20 и с пятью коррелированными exists, (встречу проектировщика -- убью тупым топором)): select * from a,b where a.f0=7 and a.f1=b.f1 and func1(a.f3)=0 Возвращает 100 строк Работает 10 мин, комментирую последний предикат - 0 сек. Т.е. порядок применения предикатов, функцию надо применить в конце, постджойн. Я делаю очень просто: select * from (select * from a,b where a.f0=7 and a.f1=b.f1 and rownum>0 -- не даем оптимизатору возможности сделать merge, и push_predicate) where func1(a.f3)=0 В информиксе пришлось бы писать через временные таблицы, и в итоге бы исполнялось 1 сек. Т.е. в информиксе просто нет понятий view merge, predicate pushing, predicate pruning (хотя может оно и есть где-то внутрях). Я возможно что-то упростил слишком сильно (во внешнем where не вызывается хранимая процедура) или не понял пример, но вот на 11.50FC5W2 работает Код: plaintext 1. 2. 3. 4. 5. 6.
и ни каких временных таблиц варианты типа Код: plaintext
тоже прекрасно работают ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2009, 21:55 |
|
хумор
|
|||
---|---|---|---|
#18+
Яковлев ПавелЯ возможно что-то упростил слишком сильно (во внешнем where не вызывается хранимая процедура) или не понял пример, но вот на 11.50FC5W2 работает во первых эта тема труп много лет. во вторых я как бы в курсе уже года два . так вот: select from (select from internal) where Как выполнить этот запрос? Вариантов масса: Сделать слияние (merge), т.е. попросту переписать к виду select from internal where Протолкнуть предикаты для internal внутрь (predicate pushing), т.е. select from (select from internal where) Выполнить как есть, сначала внутреннюю часть, (сложив во временную таблицу весь результат или построчно без временной) , потом остальное. Ну и еще кучка типа pruning,,,, Теперь проблема: бывает субд-ы неправильно применяют предикаты, например потому что не умеют оценивать стоимость функций. Т.е. имеем [select where a and b], если применять предикаты в порядке (a,b) выполнятся будет 0 сек, а если в обратном (b,a), то час. (под a и b понимаются любые конструкции поле=5, >, <, in,exists) Поэтому придуманы мерзкие хинты типа оракляечьего ordered_predicates. Так вот в оракле я использую бессмысленную конструкцию rownum>0, которая мне позволяет выкинуть "тяжелые" предикаты во внешний запрос. Это вообще не проблема оркла или информикса, это мои личные проблемы, типа мне приносят запросы на 8 листов А4, где вплоть до джойна таблиц с помощью функций func1(a.f0)=substr(b.f4), и говорят: "Работает 4 часа, сделай чтоб за 2 сек, пожалуйста". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2009, 23:09 |
|
|
start [/forum/topic.php?all=1&fid=44&tid=1607716]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 364ms |
total: | 525ms |
0 / 0 |