powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Oracle XE: a five years of no progress
200 сообщений из 200, показаны все 8 страниц
Oracle XE: a five years of no progress
    #36925618
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36925819
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oracle XE vs IBM DB2 Comparing Free Databases: Oracle XE vs IBM DB2 Express-C 2 years later

хи-хи, вывод оракл как уделывал 5 лет наза db2 express-c, так и попрежнему уделывает, не смотря на потуги.
1. SQL более наворочен, есть и regexp и model clouse
2. PL/SQL по прежнему на голову выше аналог из db2 SQLPL
3. версионные навороты попрежнему не доступны в db2 (тот же флашбэк квери )
4. Вебная администрилка в db2 так и не появилась
5. если 5 лет назад db2 позволял практически в двое больше ресурсов использовать 4Gb и кажется целых два сокета, то теперь ресурсы урезаны до 2х ядер и 2Gb RAM (увеличение ресурсов за подписку имхо откровенный грабеж, дороже SE1 лицензии обойдется )
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36925965
Yo.!
5. если 5 лет назад db2 позволял практически в двое больше ресурсов использовать 4Gb и кажется целых два сокета, то теперь ресурсы урезаны до 2х ядер и 2Gb RAM (увеличение ресурсов за подписку имхо откровенный грабеж, дороже SE1 лицензии обойдется )

там просто оптимизировали engine ;)

зато

Oracle Database 10g Express Edition

Oracle Database XE can be installed on any size host machine with any number of CPUs (one database per machine),
but XE will store up to 4GB of user data, use up to 1GB of memory, and use one CPU on the host machine.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36925990
Yo.!
1. SQL более наворочен, есть и regexp и model clouse

это только вам так кажется

Yo.!
2. PL/SQL по прежнему на голову выше аналог из db2 SQLPL

да, так есть, аналогов PL/SQL нету и это хорошо, если бы так и осталось.

Yo.!
3. версионные навороты попрежнему не доступны в db2 (тот же флашбэк квери )

ненадо

Yo.!
4. Вебная администрилка в db2 так и не появилась

и небудет, что и хорошо
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926330
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!хи-хи, вывод оракл как уделывал 5 лет наза db2 express-c, так и попрежнему уделывает, не смотря на потуги.Ну давайте разберемся, в чем именно.
Yo.!1. SQL более наворочен, есть и regexp...Нету. И в стандарте SQL нету. Но если regexp так нужен, аналог 4-х функций в Оракле в DB2 добавить - не проблема для любого умеющего запускать компилятор C++. Где-то в сети и примеры для DB2 встречал.
Yo.!...и model clouseНету. И опять-таки нет в стандарте. И не понимаю, зачем SQL'ю спрыгивать с работы над множествами на какие-то excel-like массивы, да еще с явными циклами.
А в ОраклХЕ нет рекурсивных CTE, которые есть уже везде (включая нормальный Оракл), кроме MySQL. Кстати, а connect by в DB2 - есть.
И Oracle XML DB с его вариантами "декомпозиция - для производительности и изменений, binary - для компактности и меняющихся схем, смешанный - крутитесь сами как можете, если нужно все сразу" - не лучшая альтернатива единому иерархическому движку XML в DB2.
Yo.!2. PL/SQL по прежнему на голову выше аналог из db2 SQLPLPL SQL в DB2 9.7 как язык обладает фактически теми же свойствами, что и PL/SQL в платных DB2, даже компилячится в тот же бинари код. Да, кучи модулей нет. Но есть, в отличие от OracleXE, SP на Java, в которой есть все, что угодно. И эти SP работают за пределами ограничений на память/процессоры.
Yo.!3. версионные навороты попрежнему не доступны в db2 (тот же флашбэк квери )А они действительно нужны в крайне лимитированной по ОП XE? Ресурсов и так - кот наплакал, чтобы версии в буферах держать. Да и last committed, ресурсов не кушающий, в DB2 есть.
Yo.!4. Вебная администрилка в db2 так и не появиласьТо есть кто угодно из бравзера не может базу поадминить? Вот горе-то! :)
Не понимаю, почему админ не может поставить себе софт администрирования или удаленку к компу, где он есть.
Yo.!5. если 5 лет назад db2 позволял практически в двое больше ресурсов использовать 4Gb и кажется целых два сокета, то теперь ресурсы урезаны до 2х ядер и 2Gb RAMНе совсем так. В старой лицензии можно было ставить на сервер с 4 ядрами и 4ГБ, не больше. Понятно, что DB2 оставалось не все.
В новой лицензии - ставь на любой сервер, сама использует сколько надо. Т.е. на тот же сервер можно и middleware поставить, все быстрее с БД будет работать.
Да и ядро соптимизировали. На Linux на треды перешли, например (в отличие от Оракл, кстати).
К тому же на фоне остальных Express'ов и это - подарок. Да и DB2 9.1.7 со старой лицензией никто не запрещает ставить. Да, он больше не изменяется. Но OracleXE не изменяется еще дольше :)
Yo.!(увеличение ресурсов за подписку имхо откровенный грабеж, дороже SE1 лицензии обойдется )Опять неправда. Грабеж в 1.5 раза сократился, теперь Express-C стоит 2000$ в год (с поддержкой, что дешевле даже платного MySQL :) ) или 6000$ навсегда (включая год поддержки).
А SE1 - от 1160$ за год до 5800$ навсегда. Плюс 1276$ в год поддержка. Причем никакого HA в SE1 нет, а в DB2 Express - HADR и репликация входят в стоимость. Да теперь еще и лицензии на Optim Administrator и Optim Development Studio тоже входят, а они, если отдельно покупать, за 6000$ переваливают.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926368
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Favn,

А как то, что XE "завис" в развитии помогло хоть популяризации дибиту?

ЗЫ. Кажется Оракл грозился выпустить XE11.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926372
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно грозится давно (и скоро??) уже. Пруф ))
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926488
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SiemarglА как то, что XE "завис" в развитии помогло хоть популяризации дибиту?А почему оно должно было помочь? Мы вроде СУБД сравниваем, а не их популяризацию.
На своем примере - использовал Firebird, пока DB2 Express-C не появился. Express'ы от MS и Oracle даже не рассматривал из-за ограничений на БД и память. Сейчас Firebird юзаю только для переносимого embedded без установки. Статистику чужих примеров собирать не вижу ни смысла, ни возможности.
SiemarglЗЫ. Кажется Оракл грозился выпустить XE11.Ну, когда угрозы станут реальностью, тогда и можно быдет с ним кого-нибудь сравнивать. В любом случае, скорость обновления на фоне Express-C, обновляемой примерно через 1-2 фикспака, не очень впечатляет. :)
А пока говорить, что бесплатная DB2 была порезана по ресурсам на фоне старого XE10, который уже пятилетку без всякой поддержки - как-то странно.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926494
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SiemarglТочно грозится давно (и скоро??) уже.Интересно, что их останавливает? :)
А DB2 Express-C team по ссылке в первом посте грозится поддержку PL/SQL в Express-C добавить.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926509
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Yo!
Кстати, DB2 Workgroup теперь до 64Гб ОП и туда добавили pureScale (аналог RAC). За 15000$ (включая год поддержки) на любой сокет. Цену на Oracle SE приводить? :)
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926510
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FavnSiemarglТочно грозится давно (и скоро??) уже.Интересно, что их останавливает? :)
Не хотят, очевидно.

>Мы вроде СУБД сравниваем, а не их популяризацию.
А неинтересно сравнивать то, что почти не встречается.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926517
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SiemarglА неинтересно сравнивать то, что почти не встречается.А можно ссылку на "почти не встречается" по сравнению с Оракл в цифрах? Понятно, что Оракл впереди, но слухи о "почти не встречается", мягко говоря, сильно преувеличены :)
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926518
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Favn2Yo!
Кстати, DB2 Workgroup теперь до 64Гб ОП и туда добавили pureScale (аналог RAC). За 15000$ (включая год поддержки) на любой сокет. Цену на Oracle SE приводить? :)
ну pureScale все таки далеко не аналог RAC, это скорее компонент оракового exadata.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926523
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Favn, например в количестве вакансий.
например2, в количестве инсталляций попадающихся под руку.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926540
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И Oracle XML DB с его вариантами "декомпозиция - для производительности и изменений, binary - для компактности и меняющихся схем, смешанный - крутитесь сами как можете, если нужно все сразу" - не лучшая альтернатива единому иерархическому движку XML в DB2.

http://www.oracle.com/technetwork/database/features/xmldb/db.pdf


PL SQL в DB2 9.7 как язык обладает фактически теми же свойствами, что и PL/SQL в платных DB2, даже компилячится в тот же бинари код. Да, кучи модулей нет.

вкусных конструкций языка тоже нет.


То есть кто угодно из бравзера не может базу поадминить? Вот горе-то! :)
Не понимаю, почему админ не может поставить себе софт администрирования или удаленку к компу, где он есть.

под виндой хорошо, есть терминал сервисес, а вот под линухом имхо геморой. VNC тормознутая хрень, получается или что-то еще искать или VPN поднимать. по мне 8080 проще прокинуть.

вообщем можно спорить, можно забить, но факт в том, что по ключевым позициям оракл XE по прежнему выигрывает. вот только 4гб на датафайлы все портит
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926541
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!ну pureScale все таки далеко не аналог RAC, это скорее компонент оракового exadata.Почему? Тем более в контексте Workgroup/Standard? PureScale уже есть на x86 платформах. Не знаю, только от IBM или нет, но тем не менее.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926545
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemarglнапример2, в количестве инсталляций попадающихся под руку.Под мою руку попадаются в основном инсталляции DB2. Вряд ли это что-то доказывает :)
По исследованиям рынка, помнится, DB2 отстает от Оракла и примерно делит 2-3 места с MS SQL. Вряд ли это называется "почти не встречается".
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926549
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 28.10.2010 16:16, Yo.! wrote:

> хи-хи, вывод оракл как уделывал 5 лет наза db2 express-c, так и попрежнему
> уделывает, не смотря на потуги.
> 1. SQL более
> 2. PL/SQL по прежнему
> 3. версионные навороты попрежнему
....

Ты что этим хотел сказать, что у оракла писька длиннее всех и толще всех ?
Так это и так все давно знают.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926559
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.! http://www.oracle.com/technetwork/database/features/xmldb/db.pdf
Сейчас читать некогда, но одну ложь уже нашел - в Sub-document update. Утверждается, что в DB2 документ меняется только целиком. Так оно и было в 9.1, но с 9.5 XQuery меняет именно нужную часть документа. Между тем, документ - про DB2 9.5.
Кстати, как я понимаю, в Оракл часть документа до сих пор меняется только при хранении в рел. таблицах. В binary хранении - как раз меняется весь целиком, если я правильно понял рекомендации по выбору типа storage.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926567
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!вообщем можно спорить, можно забить, но факт в том, что по ключевым позициям оракл XE по прежнему выигрывает. вот только 4гб на датафайлы все портит Кроме версионности, нужность которой с такими лимитами сомнительна, выигрышей так и не обнаружил.
А лимиты - они да, они портят :)
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926569
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FavnSiemarglнапример2, в количестве инсталляций попадающихся под руку.Под мою руку попадаются в основном инсталляции DB2. Вряд ли это что-то доказывает :)
По исследованиям рынка, помнится, DB2 отстает от Оракла и примерно делит 2-3 места с MS SQL. Вряд ли это называется "почти не встречается".
1. В мире, а не в России.
2. Макрет шаре дают в деньгах, а не в кол-ве инсталляций. А IBM не дешевая фирма )

Ладно, фиг с ним, а как интересно 1С на дибиту работает - не видел?
(На ХЕ-й Оракл 1С не встанет)
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926582
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SiemarglЛадно, фиг с ним, а как интересно 1С на дибиту работает - не видел?
(На ХЕ-й Оракл 1С не встанет)Я с 1С не работаю никак. Но где-то на этом форуме недавно пробегали ссылки на примеры инсталляции и т.д. Вроде как 1С-ники общались с IBM, даже параметры какие-то специальные в настройках 1С под DB2 добавили.
Вообще, как я понял, 1С любит именно блокировочники, а DB2 как раз такой :)
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36926597
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FavnПочему? Тем более в контексте Workgroup/Standard? PureScale уже есть на x86 платформах. Не знаю, только от IBM или нет, но тем не менее.
пригляделся, да, можно назвать аналогом. но есть у него нбюанс:

The main technology that DB2 pureScale brings to the table is the centralized lock
management and the group buffer pool. These components reside on their own
server or 2 servers if you want redundancy. This is a high overhead for your
system, if you want a 4 node cluster, you have a 50% uplift in hardware costs alone
as you require 2 extra servers for the PowerHA components. The size of your
global buffer pool is limited by the size of memory on a single server.
What happens if the PowerHA server fails? You could lose everything. If you
want higher availability, you can have a backup server which is a copy of the
primary that is kept up to date through synchronous replication. When the primary
PowerHA server fails, the DB2 cluster services will notice the loss of the heartbeat
to the primary PowerHA server and declare it down. It notifies the secondary and
all the DB2 members that the server is down. At this point the PowerHA services
are unavailable until the secondary takes over. Before the secondary can take over,
it needs to talk to all of the members to get missing data. Once the data has been
updated, it will then take over as the primary PowerHA server. At this time you
are vulnerable as the PowerHA server has no backup. Once the failed server is
restored, it becomes the secondary PowerHA server and is in “catch up” mode
until all the information from the primary can be replicated.
When a “DB2 member” server fails, the member is brought up on another server
in the cluster. This could impact application performance when you have 2
members running on the same server. When the failed server re-joins the cluster,
the member moves back to its home server. This could mean a second outage to
the client while the member is moved.

http://www.oracle.com/technetwork/database/clustering/overview/wp-oracleibm-2009-130764.pdf
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36927790
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не работал ни с тем ни другим. Но если верно то, что написано в статье:

Oracle XE is based on the code base that had several hundred security vulnerabilities that Oracle has addressed in other editions of its database products. None of these fixes are available for Oracle XE users … not one
То лично я бы никогда не выбрал такое XE для продакшена, только может для обучения и не более того. Отсутствие фиксов - незачет.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36927796
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglFavnSiemarglнапример2, в количестве инсталляций попадающихся под руку.Под мою руку попадаются в основном инсталляции DB2. Вряд ли это что-то доказывает :)
По исследованиям рынка, помнится, DB2 отстает от Оракла и примерно делит 2-3 места с MS SQL. Вряд ли это называется "почти не встречается".
1. В мире, а не в России.
2. Макрет шаре дают в деньгах, а не в кол-ве инсталляций. А IBM не дешевая фирма )

Ладно, фиг с ним, а как интересно 1С на дибиту работает - не видел?
(На ХЕ-й Оракл 1С не встанет)
1. "В мире" платят больше, чем в РФ (гамзпром и ржд не всчет)
2. IBM и маркетинг две несовместимые вещи
3. Работает, и даже в комплекте идет. И даже, как говорил Favn настройки есть.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36927854
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абсолют, знаю, что работает с 1С, а вот со свидетелем бы толковым поговорить....
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36928747
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FavnДа и ядро соптимизировали. На Linux на треды перешли, например (в отличие от Оракл, кстати).А Оракл еще нет?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36930893
const64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglАбсолют, знаю, что работает с 1С, а вот со свидетелем бы толковым поговорить....
У нас работает 1С на DB2, но оно как-бы параллельно от меня, поэтому ничего толкового не скажу (кроме констатации факта).
Кстати, 1C заявляет что работает и с Oracle (11gR1 и 10gR2)
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36932109
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_LFavnДа и ядро соптимизировали. На Linux на треды перешли, например (в отличие от Оракл, кстати).А Оракл еще нет?А что это Yo молчит? А то как какая СУБД, он сразу найдет что сказать, а тут так скромно отмалчивается? Видно процессы у Оракла легковесны аки пушинки и не стоит обращать внимания на такие мелочи архитектуры.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36932180
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
const64, 1С c XE не работает.


Senya_L, вопрос малоинтересный - а не все ли равно, как сделано внутри черной коробочки?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36932181
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот как раз таки очень интересно.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36934280
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Senya_LА что это Yo молчит? А то как какая СУБД, он сразу найдет что сказать, а тут так скромно отмалчивается? Видно процессы у Оракла легковесны аки пушинки и не стоит обращать внимания на такие мелочи архитектуры.
Yo! лениво перетирать одно и то же, Yo! ждет достойной темы для беспощадного флейма
тхредовую модель оракл имеет с лохматых 90х для виндовой архитектуры. как известно оракл это код на С, т.е. перенести тхредовую модель на *nix оракл мог бы очень быстро. тхредовую же модель для винды оракл ввел не потому, что тхреды имеют преимущества, а потому что процессорная модель под виндой страшно тормозила.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36934316
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!Yo! ждет достойной темы для беспощадного флейма

Дык...

Yo.!а потому что процессорная модель под виндой страшно тормозила.

и виновата в этом, конечно, винда?!
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36934326
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!тхредовую модель оракл имеет с лохматых 90х для виндовой архитектуры.

То бишь потоки в оракуле раньше чем в самой винде... Ну-ну. Или "лохматыми" считается
исключительно вторая половина 90-х?..
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36934347
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!а потому что процесс ор ная модель под виндой страшно тормозила.

IMHO, здесь лишние буковки...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36934357
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin
и виновата в этом, конечно, винда?!
у оракла есть нота на металинке где, так и говориться - процессы под виндой тормозили, пришлось воротить тхреды. на сколько мне известно Informix и Db2 по тем же причинам наворотили тхреды примерно в тот же период. только информикс вообще решил тхреды самостоятельно реализовать.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36934414
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!у оракла есть нота на металинке где, так и говориться - процессы под виндой тормозили, пришлось воротить тхреды.

Так, м.б., как в той поговорке, не надо со своим уставом в чужой монастырь, ну, или в Тулу, со своим самоваром. ;)

ЗЫ. Нет, у меня, уже давно, доступа на металинк. Денежку за этот самый доступ надо платить (ну Вы подумайте только), в отличие от Microsoft KB.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36934706
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin, передергивать не надо.
Платится Ораклу за саппорт и апдейты (версионные апдейты инклудед), а металинк довесок на халяву.
Модель MS - KB и простые апдейты на халяву, а версионные по полной цене, или SA за 50% каждые два года.

Хрен редьки не слаще, но для бесплатных версий у MS и редька бесплатно )
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36934714
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglМодель MS - KB и простые апдейты на халяву, а версионные по полной цене, или SA за 50% каждые два года.

Давайте так. SA подразумевает выпуск "апдейта" по данный конкретный случай (к слову ждем не дождемся одного конкретного). Все остальное - абсолютно бесплатно.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36934796
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin, не понял.

SA покрывает переход например SQL 2008-> SQL 2008 R2 -> SQL 2010.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36934903
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglне понял.

SA покрывает переход например SQL 2008-> SQL 2008 R2 -> SQL 2010.

Не совсем так, точнее, совсем не так: http://www.microsoft.com/rus/licensing/volume/SoftwareAssurance/AdvantagesOverview/Support.aspx

Поддержка в режиме 24х7 (24 часа в сутки, 7 дней в неделю) предоставляется для проблем высокого уровня важности в критических для бизнеса ситуациях (Severity A), время отклика составляет 2 часа. Поддержка в ситуациях средней важности (Severity B) осуществляется только в рабочие часы, время отклика составляет 4 часа. Для проблем, имеющих минимальные последствия для бизнеса (Severity C) поддержка предоставляется только в рабочие часы (в том числе и через Интернет), время отклика – 1 рабочий день.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36934951
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin, цитировать так полностью

При наличии минимум 1 серверной лицензии с SA предоставляется бесплатный инцидент поддержки по телефону. Активировать преимущество и получить код доступа для использования технической поддержки (SA Access ID) можно на сайте: Microsoft Volume Licensing Services.
Для получения технической поддержки авторизованному пользователю следует обратиться по телефонам Центра информационной и технической поддержки.
За каждые $200.000 стоимости SA в составе офисных приложений и операционных систем предоставляется 1 инцидент поддержки по телефону
За каждые $20.000 стоимости SA в составе серверных продуктов и клиентских лицензий предоставляется 1 инцидент поддержки по телефону
Инциденты назначаются в зависимости от варианта оплаты лицензии. В соглашениях с единовременной оплатой инциденты назначаются при заключении соглашения, в соглашениях с ежегодными платежами инциденты распределяются следующим образом:

1/3 инцидента если продукт приобретён в течение первых 12 месяцев соглашения

1/2 инцидента если продукт приобретён в 12-24 месяцы соглашения

1 инцидент если продукт приобретён в 24-36 месяцы соглашения
Инциденты поддержки по телефону охватывают все продукты, поставляемые по программам корпоративного лицензирования MS (например, серверы выпусков Enterprise Edition и Standard Edition и продукты для настольных компьютеров)
Неиспользованные инциденты технической поддержки истекают вместе со сроком действия Software Assurance и не могут быть перенесены на другое соглашение.


Так что сама по себе SA поддержки дает, скажем так, немного )))))))))
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36934960
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin, Там вообще написано, что для Open License - МПХ поддержки (((((((
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36935065
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ак все-таки, что настчет патчей на XE? В статье написана правда?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36935149
pkarklinSiemarglне понял.

SA покрывает переход например SQL 2008-> SQL 2008 R2 -> SQL 2010.

Не совсем так, точнее, совсем не так: http://www.microsoft.com/rus/licensing/volume/SoftwareAssurance/AdvantagesOverview/Support.aspx




товарищи,

давайте по теме плз
т.е. только DB2 и Оракл

спасибо
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36935151
Yo.!pkarklin
и виновата в этом, конечно, винда?!
у оракла есть нота на металинке где, так и говориться - процессы под виндой тормозили, пришлось воротить тхреды. на сколько мне известно Informix и Db2 по тем же причинам наворотили тхреды примерно в тот же период. только информикс вообще решил тхреды самостоятельно реализовать.

это все делали, такова реальность вынь-платформы

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

информикс раньше, если неошибаюсь, только юникс любил все оттуда и тянется.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36936307
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!хи-хи, вывод оракл как уделывал 5 лет наза db2 express-c, так и попрежнему уделывает, не смотря на потуги.Добрый день.
Давно хотел пообщаться с человеком, знакомым с обеими диалектами.
Yo.!1. SQL более наворочен, есть и regexp и model clouse
regex
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
create function regexp_match(
  source varchar( 4000 )
, pattern varchar( 128 )
, replacement varchar( 128 )
, flags varchar( 4 )
)
deterministic
no external action
returns int
return xmlcast(
xmlquery('fn:matches($s, $p, $f)' passing 
  source as "s"
, pattern as "p"
, flags as "f"
)
as int);

create function regexp_replace(
  source varchar( 4000 )
, pattern varchar( 128 )
, replacement varchar( 128 )
, flags varchar( 4 )
)
deterministic
no external action
returns varchar( 4000 )
return xmlcast(
xmlquery('fn:replace($s, $p, $r, $f)' passing 
  source as "s"
, pattern as "p"
, replacement as "r"
, flags as "f"
)
as varchar( 4000 ));
А вообще у меня ещё в v6.1 вполне нормально работали регулярные выражения на ява-функциях с использованием свободно распространяемого zip-а, где была реализована вся логика.
Yo.!2. PL/SQL по прежнему на голову выше аналог из db2 SQLPLPL/SQL в 9.7 стал значительно мощнее.
Не могли бы вы привести примеры превосходства на голову ораклового SQL/PL над ибм-овским?
Yo.!3. версионные навороты попрежнему не доступны в db2 (тот же флашбэк квери )Если мне нужна версионность, то для любой таблицы с уникальным ограничением (pk или unique key) я легко 3-мя триггерами организую ведение историй изменений в исторической таблице. Могу на примере показать, если кому интересно...
Yo.!4. Вебная администрилка в db2 так и не появилась
5. если 5 лет назад db2 позволял практически в двое больше ресурсов использовать 4Gb и кажется целых два сокета, то теперь ресурсы урезаны до 2х ядер и 2Gb RAM (увеличение ресурсов за подписку имхо откровенный грабеж, дороже SE1 лицензии обойдется )Здесь вроде сравнивают не версии db2 друг с другом, а db2 express-c с oracle xe.
А если я правильно понял про ограничения ресурсов в oracle xe, то получается, что у ibm доступно в 2 раза больше ядер и памяти и нет ограничения на размер базы.
Правильно?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36936598
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinА вообще у меня ещё в v6.1 вполне нормально работали регулярные выражения на ява-функциях с использованием свободно распространяемого zip-а, где была реализована вся логика.

UDF, тем более жава будет на порядки тормознутее. жава это отдельный процесс в db2, т.е. данные гоняются от db2 к жаве и обратно.
кстати, а индекс на UDF с жавой/regxep можно построить или однозначно фулсканить будет ?

Mark Barinstein
Не могли бы вы привести примеры превосходства на голову ораклового SQL/PL над ибм-овским?

на сколько я знаю там до сих пор нет аналога базовых вещей таких как %ROWTYPE, BULK INSERT, ref_cursor

Mark Barinstein
Если мне нужна версионность, то для любой таблицы с уникальным ограничением (pk или unique key) я легко 3-мя триггерами организую ведение историй изменений в исторической таблице. Могу на примере показать, если кому интересно...

версионность это несколько другое, погуглите уровень изолированности транзакций SNAPSHOT

Mark Barinstein
Здесь вроде сравнивают не версии db2 друг с другом, а db2 express-c с oracle xe.
А если я правильно понял про ограничения ресурсов в oracle xe, то получается, что у ibm доступно в 2 раза больше ядер и памяти и нет ограничения на размер базы.
Правильно?
здесь да, но в статье шла речь об отсутствии прогресса в oracle xe, вот я и напомнил какого впечатляющего прогресса добился db2 express-c в этом плане

Ggg_oldтак все-таки, что настчет патчей на XE? В статье написана правда?
не совсем, понятно, что сотен багов в xe нет, т.к. там нет и 95% компонентов на которые приходятся баги.
что до самих патчей, то тому у кого нет доступа к металинку они не доступны. но если у тебя вдруг есть доступ (а есть тысяча и один способ его получить), то смутно помню, что был официальный документ разъясняющий как следует патчить XE. суть на сколько я помню бала така: берешь взрослую редакцию и мамой клянешся, что за рамки лицензии XE не выйдешь.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36936815
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Mark BarinsteinА вообще у меня ещё в v6.1 вполне нормально работали регулярные выражения на ява-функциях с использованием свободно распространяемого zip-а, где была реализована вся логика.

UDF, тем более жава будет на порядки тормознутее. жава это отдельный процесс в db2, т.е. данные гоняются от db2 к жаве и обратно.
Нормально там всё работало, сравнивали С и java реализации - разницы большой не было.
Yo.!кстати, а индекс на UDF с жавой/regxep можно построить или однозначно фулсканить будет ?Не уверен, что понял вопрос.
Индекс на UDF? Это как?
Если речь идёт о индексу по выражению, то делается generated always поле с выражением, в котором используется java/c udf, индекс на это поле, и тогда оптимизатор будет его использовать, если посчитает это нужным.
Yo.!Mark Barinstein
Не могли бы вы привести примеры превосходства на голову ораклового SQL/PL над ибм-овским?на сколько я знаю там до сих пор нет аналога базовых вещей таких как %ROWTYPE, BULK INSERT, ref_cursor
row data type , BULK INSERT и ref_cursor я никак не могу считать базовыми (для пересадки с оракла их сделали в ibm'овской поддержке pl/sql, но это не в express-c).
Без них можно легко обойтись.
Если мне нужны BULK INSERT, я заведу себе session таблицу и буду делать insert select туда.
ref cursor - у db2 есть свой способ воздращения курсоров из процедур.
Yo.!версионность это несколько другое, погуглите уровень изолированности транзакций SNAPSHOTЯ говорил, конечно, об эмуляции flashback query, а не о read consistency.
И я бы не стал утверждать, что раз оно в оракле есть, то оракл имеет превосходство на голову.
Так же как и обратное про уровни изоляции в db2, которых нет в оракле...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36936896
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinНормально там всё работало, сравнивали С и java реализации - разницы большой не было.

а теперь сравните какой-нибудь встроенный substr с substr на внешнем С

Mark Barinstein
Если речь идёт о индексу по выражению, то делается generated always поле с выражением, в котором используется java/c udf, индекс на это поле, и тогда оптимизатор будет его использовать, если посчитает это нужным.

покажите как будет выглядеть аналог этому оракловому индексу в db2
CREATE INDEX parks_acreage ON michigan_parks (REGEXP_LIKE(description, '[^ ]+[- ]acres?','i'));

Mark Barinstein я никак не могу считать базовыми (для пересадки с оракла их сделали в ibm'овской поддержке pl/sql, но это не в express-c).
Без них можно легко обойтись.

вы можете я нет, потому и утверждаю, что "PL/SQL по прежнему на голову выше"

Mark BarinsteinЯ говорил, конечно, об эмуляции flashback query, а не о read consistency.
вы меня пугаете

Mark BarinsteinИ я бы не стал утверждать, что раз оно в оракле есть, то оракл имеет превосходство на голову.
Так же как и обратное про уровни изоляции в db2, которых нет в оракле...
согласен, но тут есть нюанс: я вам могу показать где задачи, которые без версионных уровней через анус приходиться решать, а вы мне показать задачу где без блокировочных никак не покажите.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36936906
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!UDF, тем более жава будет на порядки тормознутее. жава это отдельный процесс в db2, т.е. данные гоняются от db2 к жаве и обратно.В функциях Марка нет никакой java, там используется regexp из XQuery. Такая UDF будет подставлятся в запрос inline, никаких порядков тормознутости не будет.
При желании, можно написать UDF на С++ с regexp из TR1. Если ее сделать unfenced, опять-таки никаких тормозов не возникнет.
Yo.!кстати, а индекс на UDF с жавой/regxep можно построить или однозначно фулсканить будет ?Идексы по функциям строить нельзя. Можно сделать generated поле и по нему построить индекс.

Yo.!на сколько я знаю там до сих пор нет аналога базовых вещей таких как %ROWTYPE, BULK INSERT, ref_cursor Row data type
Вместо BULK INSERT для массивов - UNNEST table function , вот пример .
Cursor data type

Yo.!суть на сколько я помню бала така: берешь взрослую редакцию и мамой клянешся, что за рамки лицензии XE не выйдешь.Не очень понятна корреляция такой-то матери с лицензионными ограничениями :)

PS. Кстати, по поводу XML storage - до DB2 9 был XML Extender, аналог XML DB в Oracle, тоже с ваозможностью декомпозиции в реляционные таблицы. Сейчас pureXML позволяет не заморачиваться выбором варианта хранения XML. Вот их сравнение.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36937028
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Mark BarinsteinНормально там всё работало, сравнивали С и java реализации - разницы большой не было.
а теперь сравните какой-нибудь встроенный substr с substr на внешнем СОбычно нет особого смысла сравнивать чистые вызовы функци.
Контекст, в котором вызовы функций используются (парсинг, оптимизирование запросов, доступ к данным, возврат результата клиенту и т.д.), как правило имеет гораздо большие накладные расходы, и в подавляющем большинстве промышленных случаев вы разницу в производительности таких функций просто не заметите.
Но можете, конечно, заметить, если в голом цикле только эту ф-цию и будете вызывать.
Только это не нужно никому.
Кстати, C функции в db2 можно и not fenced сделать (в оракле, кажется, нельзя), и тогда вы нигде разницы вообще не увидите.
Yo.!
покажите как будет выглядеть аналог этому оракловому индексу в db2
CREATE INDEX parks_acreage ON michigan_parks (REGEXP_LIKE(description, '[^ ]+[- ]acres?','i'));
Типа такого что-то:
alter table michigan_parks add cN generated always as (REGEXP_LIKE(description, '[^ ]+[- ]acres?','i'));
CREATE INDEX parks_acreage ON michigan_parks (cN);

Yo.!Mark BarinsteinЯ говорил, конечно, об эмуляции flashback query, а не о read consistency.
вы меня пугаете Я вот что прочитал:
flashback query in oracle 9i
и решил, что подобные фокусы можно эмулировать ведением исторической таблицы.
Оно, может, и не будет во всех деталях как в оракле работать, но для этого примера - будет.
Поправьте меня, если я не прав - я действительно почти не знаком с ораклом...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36937132
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FavnИдексы по функциям строить нельзя. Можно сделать generated поле и по нему построить индекс.
ну раз нельзя то незачет ставим.
по sqlpl %rowtype, bulk insert зачет, а курсор я не увидел возможности передать его на клент и в другую процедуру (собственно для чего и делался ref_cursor)

xml поищу чуть другой документ, там хорошо в двух абзацах оракл, в чем принципиально отличается мифический binary storage от ораклового, который вроде как не бинари. странно, что в этом документе не было.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36937147
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinОбычно нет особого смысла сравнивать чистые вызовы функци.
Контекст, в котором вызовы функций используются (парсинг, оптимизирование запросов, доступ к данным, возврат результата клиенту и т.д.), как правило имеет гораздо большие накладные расходы, и в подавляющем большинстве промышленных случаев вы разницу в производительности таких функций просто не заметите.

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

Mark BarinsteinКстати, C функции в db2 можно и not fenced сделать (в оракле, кажется, нельзя), и тогда вы нигде разницы вообще не увидите.

наоборот, proC процедура не умеет быть fenced (терминами ибм)

по индексу и флешбэк не зачет, сами понимаете, что цена такой эмуляции не сравнима и потому на адекватный аналог не тянет. как ни крути в оракле более элегантное и что важно оптимальное предложение. хотя и 5 лет без прогресса ...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36937198
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
флешбек не нужен.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36937339
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!ну раз нельзя то незачет ставим.Индекс можно построить? Можно. Оптимизатор его подхватит? Подхватит. В связи с чем незачет? Поле "лишнее" создается? Да, такой вот заточенный на производительность механизм - индексы строятся только по лежащим в таблице данным. И что в этом страшного? Особенно на фоне извратов, необходимых в некоторых "уделывающих" СУБД для безобидного испоьзования (в т.ч. индексирования) null, например. И тем более того, что DDL в DB2 транзакционный, в отличие от тех же "уделывающих" :)
Yo.!а курсор я не увидел возможности передать его на клент и в другую процедуру (собственно для чего и делался ref_cursor)Да хоть кучу курсоров. Можно посмотреть тут и вот тут , например.
Yo.!xml поищу чуть другой документ, там хорошо в двух абзацах оракл, в чем принципиально отличается мифический binary storage от ораклового, который вроде как не бинари. странно, что в этом документе не было.Жду с нетерпением. Может, хоть пойму, что же в настоящем иерархическом движке pureXML "мифического". Кстати, выражения (в т.ч. regexp) в DB2 есть в XML индексах.

ЗЫ. Что-то окромя странных массивов в SQL (model clause) и мягко говоря избыточного в условиях 1ГБ ОП SNAPSHOT я признаков "уделывания" не обнаружил :)
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36937395
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Favn,

XE конечно устарел, но
+10g в любом релизе хороша
+в нем есть HTML DB = APEX
-+патчи нужны???? наверное, но не в пятидесятой инкарнации
-ресурсоемкость осталась не по детски

=> как конструктор для квикстарта XE - подойдет, апдейт и рыночные перспективы спецов по ней обеспечат им и их приложениям будущее. На полноценное ее использование никто не расчитывает - не нужно, всем нужна "морковка".
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36937446
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FavnИндекс можно построить? Можно. Оптимизатор его подхватит? Подхватит. В связи с чем незачет?
что такое лишняя колонка, лишняя колонка лишние блоки, лишние блоки кушают лишнее место в кеше + лишнее и/о.
в такую игру можно поиграть, но чур я буду фаном фокспро и говорить вообщем-то и на фокспро можно сделать все что умеет db2 express-c. клиент-сервер через soap, лог транзакций тригером, огрничение в 2гб UNION

FavnЗЫ. Что-то окромя странных массивов в SQL (model clause) и мягко говоря избыточного в условиях 1ГБ ОП SNAPSHOT я признаков "уделывания" не обнаружил :)
но это не значит, что их нет ...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36937475
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня очень глупый вопрос. Как часто вы используете этот адовый регексовый индекс?

А, ну и да, вопрос чисто для Yo! : Сколько вам потребуется времени, что бы FoxPro в Db2 Express-C переделать?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36937502
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АбсолютУ меня очень глупый вопрос. Как часто вы используете этот адовый регексовый индекс?
редко но метко.

АбсолютА, ну и да, вопрос чисто для Yo! : Сколько вам потребуется времени, что бы FoxPro в Db2 Express-C переделать?
чуть меньше чем вам из db2 express-c переделать в Oracle XE

Favn
PS. Кстати, по поводу XML storage - до DB2 9 был XML Extender, аналог XML DB в Oracle, тоже с ваозможностью декомпозиции в реляционные таблицы. Сейчас pureXML позволяет не заморачиваться выбором варианта хранения XML. Вот их сравнение.

как я понял где такая картина
DB2 XML Extender с CLOB это аналог XMLDB где тип хранения CLOB
DB2 XML Extender c shredded это аналог XMLDB где тип хранения реляционные таблички
DB2 pureXML это аналог XMLDB тип хранения Binary XML

насилу нашел док о котором говорил:
http://sites.google.com/site/triffids/files/_technology_tech_xml_xmldb_Current_xmldb_vs_viper_ext.pdf?attredirects=0&d=1

очень метко замечено, что у оракла разделена логическая модель, от формата хранения (каждый из которых имеет преимущества в своей ситуации). а в db2 похоже XML Extender совсем не совместимая модель с pureXML.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36937505
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"как я понял где такая картина"
нужно читать как
"как я понял у нас примерно такая картина:"
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36938505
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Mark BarinsteinКстати, C функции в db2 можно и not fenced сделать (в оракле, кажется, нельзя), и тогда вы нигде разницы вообще не увидите.

наоборот, proC процедура не умеет быть fenced (терминами ибм)Какая, процедура?
Pro*C/C++ ???
Да это же просто прекомпилятор, который embedded sql в нативные C/C++ вызовы преобразует, и на выходе получается обычный исходник, который потом подаётся на вход компилятору C/C++.
В db2 похожий есть с аналогичными принципами, хотя и есть разница в деталях.
OracleThe Pro*C/C++ precompiler is a software tool that enables the programmer to embed SQL statements in a C or C++ source file. Pro*C/C++ reads the source file as input and outputs a C or C++ source file that replaces the embedded SQL statements with Oracle Database run-time library calls and is then compiled by the C or C++ compiler.
А C External routines запускаются в отдельном адресном пространстве.
Может, вы имели ввиду какой-то другой proC?
Приведите ссылку, пожалуйста.
Yo.!по индексу и флешбэк не зачет, сами понимаете, что цена такой эмуляции не сравнима и потому на адекватный аналог не тянет. как ни крути в оракле более элегантное и что важно оптимальное предложение. хотя и 5 лет без прогресса ...
Профессор, ну а чего сразу-то - незачёт? :)
По индексу: вы опять крохи какие-то считать начинаете - вы их часто, эти функциональные индексы используете?
Я ведь не начинаю незачётами в оракла бросаться из-за того, что он в лог значительно больше пишет, или из-за того, что одна и та же саповская база, загруженная в оракл и в дб2 на одной и той-же системе в оракле на диске места больше занимает. У всех разная реализация.
А это более важные вещи, чем како-то копеечный оверхед на этих функциональных индексах.

По флешбеку: я не админил оракл, мне трудно сказать, насколько там элегантно и оптимально оно реализовано.
Я, например, не раз слышал изречения оракловых админов, что "за флешбек на продакшене надо убивать". Мне трудно судить об этом, может, неопытные они были...
А мой элегантный флешбек, кроме очевидных недостатков, имеет и очевидные преимущества:
- я могу включать и выключать его выборочно для любого набора таблиц, а не для всей базы
- мне не надо беспокоиться за распухающий undo
- я могу контролировать глубину истории
- я могу сохранять доп. атрибуты: типа - кто в Ленина стрелял и из какого оружия :)

Как-то я делал такие вещи в одной из своей систем - надо было фиксировать, как там документы в прошлом выглядели. И нормально оно работало, систему сильно не перегружало, никто никого не убил. Наверное, потому что я там и админом был :)

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

Вы вот скажите, этот флешбек часто для чего-то другого в продакшене используют?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36938595
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein
Да это же просто прекомпилятор, который embedded sql в нативные C/C++ вызовы преобразует, и на выходе получается обычный исходник, который потом подаётся на вход компилятору C/C++.
В db2 похожий есть с аналогичными принципами, хотя и есть разница в деталях.

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

где вы такое прочитали ? pro*c собственно потому и вымерло, что запускалось в юзерском адресном пространстве без защиты памяти сервера перед шаловливыми ручками.

Mark BarinsteinЯ ведь не начинаю незачётами в оракла бросаться из-за того, что он в лог значительно больше пишет, или из-за того, что одна и та же саповская база, загруженная в оракл и в дб2 на одной и той-же системе в оракле на диске места больше занимает. У всех разная реализация.

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

Mark BarinsteinЯ, например, не раз слышал изречения оракловых админов, что "за флешбек на продакшене надо убивать". Мне трудно судить об этом, может, неопытные они были...
говорят в Москве кур доят (с)

в общем я привел привел аргументы, с вашими тоже могу согласиться. да можно жить и без флешбэк, можно и без функциональных индексов, даже без версионности наверно можно. в конце концов есть продакшены и на фокспро, просто мне удобней эти и многие другие вещи иметь, пусть я их и не каждый день использую.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36938771
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Mark Barinstein
Да это же просто прекомпилятор, который embedded sql в нативные C/C++ вызовы преобразует, и на выходе получается обычный исходник, который потом подаётся на вход компилятору C/C++.
В db2 похожий есть с аналогичными принципами, хотя и есть разница в деталях.

конечно есть, жава называется. в db2 абсолютно идентично присобачена жава.Ява здесь ни при чём, сравниваются oracle pro*с и db2 prep для c/c++. Для явы оно тоже есть, но речь здесь не о ней.
Yo.!Mark Barinsteinзапускаются в отдельном адресном пространстве.
где вы такое прочитали ? pro*c собственно потому и вымерло, что запускалось в юзерском адресном пространстве без защиты памяти сервера перед шаловливыми ручками.
Я вас не понимаю: сначала вы говорите, что pro*C процедуры (это на прекомпиляторе что-ли которые (!)) не могут работать в отдельном адресном пространстве от ядра менеджера, потом - что они вымерли...
Я же привёл ссылку, неужели трудно прочитать было?
Ещё раз:
C External Procedures
OracleA PL/SQL procedure executing on Oracle Database can call an external procedure or function that is written in the C programming language and stored in a shared library. The C routine runs in a separate address space from that of Oracle Database .Если не нравится эта ссылка, я ещё могу привести, хотя, куда уж здесь понятнее может быть...
Yo.!если и больше то понятно почему. потому, что дизайнеры оракла оказались дальновиднее и не напихали структуру блокировок в память. да в оракле блок скорее всего меньше данных содержит т.к. в нем зарезервировано место под блокировки, но преимущество которое за счет этого получает оракл перекрывает все расходы с лихвой (экономия памяти, не нужность эскалации).Насчёт дальновидности могу поспорить.
Вы умалчиваете про расходы на undo.
А ведь при каждом изменении всего одной строки в блоке, оракл тянет весь блок в undo, причём таких копий одного блока в undo может быть много (второе приложение изменило строку в том же блоке, и вот она - ещё одна копия и т.д.). Я прав?
И в масштабах всего сервера это весьма значительные накладные расходы, которые совершенно не идут ни в какое сравнение с расходами памяти на lock list в db2. Просто поверьте мне, как админу, что этого lock list в db2 по сравнению с другими потребителями памяти (буферы, например) обычно почти не видно.
Эскалация же блокировок в oltp - это, как правило, результат криво написанного приложения, которое много сканит, вместо того, чтобы соответствующие индексы использовать, например.
Так что вы должны понимать, что весьма удобную штуку для некоторых алгоритмов, как версионность, вы получает ценой значительно бОльших накладных расходов , чем в db2.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36938797
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибочка вышла:
db2 prep
И ещё, если у меня нет embedded sql в программе, мне этот промежуточный шаг не нужен ни в java, ни c.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939056
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! , советую оценивать полезность фич.

Например, у DB2 Express-C нет функции по индексам, а у Oracle XE, предположим (я его документацию не читал), есть. Что это значит? Некоторые таблицы в DB2 будут немного шире, чем могли бы.

Теперь вспомним пару подробностей про Oracle XE, Первая - ограничение всего 4 гига данных, что означает, что разумный разработчик будет его использовать только для баз с много меньшим размером данных, чтобы в обозримом будущем не выйти за рамки. А, значит, запросы там и так будут работать быстро. Вторая - что Oracle не индексирует NULL'овые значения, потому ораклист часто использует индексы по функции тогда, когда DB2-шнику это просто не нужно.

Итак, после этого, как отсутствие функциональных индексов в DB2 послужит аргументом в пользу Oracle в сравнении "DB2 Express-C vs Oracle XE"?

Можно ещё повспоминать про фичи, присутствующие в DB2 и отсутствующие в Oracle - select from insert, update, delete. Есть какие-то костыли, но на уровне PL/SQL. Между тем... ну, вот то, что я вижу постоянно в поддерживаемых мой системах. К примеру, запросы, выглядящие так

Код: plaintext
1.
2.
SELECT ..., some_func(some_id)
FROM t1
где some_func не занимается ничем иным, как выдёргивает значения из t2 (select t2.val into: retval from t2 where t2.some_id=:var) или, если не нашлось, из t3.
Когда можно было бы написать так:
Код: plaintext
1.
2.
3.
4.
SELECT ..., coalesce(t2.val, t3.val, 'что-то-там')
FROM t1
  LEFT JOIN t2 ON t1.some_id=t2.some_id
  LEFT JOIN t3 ON t1.some_id=t3.some_id

Это ещё самый безобидный пример того, что без PL/SQL получается лучше. Но народ к этому не приучен. Норовят написать десятки процедур и функций, открыть кучу курсоров, получая жирное тормознутое чудовище, где нередко можно обойтись даже одним SQL-запросом.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939069
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FavnПочему? Тем более в контексте Workgroup/Standard? PureScale уже есть на x86 платформах. Не знаю, только от IBM или нет, но тем не менее.
На IBM'овских:
DB2 pureScale] http://www-01.ibm.com/software/data/db2/linux-unix-windows/editions-features-purescale.html
Yo.!пригляделся, да, можно назвать аналогом. но есть у него нбюанс:Я тут позволю себе немного прокомментировать высказывания:
Oracle
The main technology that DB2 pureScale brings to the table is the centralized lock
management and the group buffer pool. These components reside on their own
server or 2 servers if you want redundancy. This is a high overhead for your
system, if you want a 4 node cluster, you have a 50% uplift in hardware costs alone
as you require 2 extra servers for the PowerHA components. The size of your
global buffer pool is limited by the size of memory on a single server.Непонятно, откуда взята цифра в 50%. Там речь идёт примерно о 1 (PowerHA) к 6 (Member) по ядрам, хотя, конечно, от нагрузки зависит, но не 1 к 1.
Минимально рекомендованная конфикурация, это 2 железки, каждая побитая на 2 LPAR'а, т.е. на каждой железке по 1 PowerHa и Member.
Кроме того, ядра PowerHA не лицензируются со стороны db2, и, как правильно замечено в статье, это только дополнительные расходы на железо.
У оракла же лицензируются все ядра, которым, кроме обычной работы ещё и приходится также управлять блокировками.
OracleWhat happens if the PowerHA server fails? You could lose everything. If you
want higher availability, you can have a backup server which is a copy of the
primary that is kept up to date through synchronous replication. When the primary
PowerHA server fails, the DB2 cluster services will notice the loss of the heartbeat
to the primary PowerHA server and declare it down. It notifies the secondary and
all the DB2 members that the server is down. At this point the PowerHA services
are unavailable until the secondary takes over. Before the secondary can take over,
it needs to talk to all of the members to get missing data. Once the data has been
updated, it will then take over as the primary PowerHA server. At this time you
are vulnerable as the PowerHA server has no backup.Похоже на вопрос: "что будет, если упадёт обычный инстанс? вы же можете потерять все данные!".
А с какого перепугу?
Обычно есть 2 LPAR, где запущен PowerHA - первичный и вторичный.
Падает один - в течение нескольких секунд второй возобновляет обслуживание.
Падают оба одновременно, можно запустить PowerHA на выжившем LPAR, где Member работает, и тогда запустится обычная процедура crash recovery, и, если с общим диском всё в порядке, то данные не потеряются.
О каком там backup для PowerHA идёт речь - непонятно.
OracleOnce the failed server is
restored, it becomes the secondary PowerHA server and is in “catch up” mode
until all the information from the primary can be replicated.
When a “DB2 member” server fails, the member is brought up on another server
in the cluster. This could impact application performance when you have 2
members running on the same server. When the failed server re-joins the cluster,
the member moves back to its home server. This could mean a second outage to
the client while the member is moved.Member никогда не запускается на другом сервере в рабочем режиме. На другом сервере запускается только уменьшенная копия ядра db2 только для целей восстановления блоков данных, с которыми работали незавершённые на момент падения транзакции. Он не начинает обслуживать клиентские транзакции при этом.
После того, как восстановление страниц закончено, Member запускается на своём родном сервере и только тогда начинает обслуживать транзакции.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939155
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor Metelitsa Yo.! , советую оценивать полезность фич.

Например, у DB2 Express-C нет функции по индексам, а у Oracle XE, предположим (я его документацию не читал), есть. Что это значит? Некоторые таблицы в DB2 будут немного шире, чем могли бы.

Теперь вспомним пару подробностей про Oracle XE, Первая - ограничение всего 4 гига данных, что означает, что разумный разработчик будет его использовать только для баз с много меньшим размером данных, чтобы в обозримом будущем не выйти за рамки.

ну с 2 ядрами и 2гб у дб2 DWH тоже не построишь

Victor MetelitsaИтак, после этого, как отсутствие функциональных индексов в DB2 послужит аргументом в пользу Oracle в сравнении "DB2 Express-C vs Oracle XE"?
ну на предыдущей странице индекс по регеспу я показывал.

Victor MetelitsaМожно ещё повспоминать про фичи, присутствующие в DB2 и отсутствующие в Oracle - select from insert, update, delete.
а можно конкретный SQL который нельзя на оракле. я думаю returning clouse будет полным аналогом в оракле.

Victor MetelitsaМежду тем... ну, вот то, что я вижу постоянно в поддерживаемых мой системах. К примеру, запросы, выглядящие так
тут не понял, набрали быдлокодеров которые не знают про coalesce/decode, а оракл то тут причем ?

по pureScale, допустим на поверах выкрутиться можно LPARами, а на x86 вы на вмваре предлагаете сажать
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939157
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa
Можно ещё повспоминать про фичи, присутствующие в DB2 и отсутствующие в Oracle - select
from insert, update, delete.

Это так в фантазиях IBM выглядят стандартные insert/update/delete...returning?..

Victor Metelitsaвот то, что я вижу постоянно в поддерживаемых мой системах.

А это ничего, что вариант с джоинами работает как минимум не быстрее, а в ряде случаев
медленнее?.. Функция не будет читать t3 если значение найдено в t2. Join - будет всегда.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939190
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein
OracleWhat happens if the PowerHA server fails? You could lose everything. If you
want higher availability, you can have a backup server which is a copy of the
primary that is kept up to date through synchronous replication. When the primary
PowerHA server fails, the DB2 cluster services will notice the loss of the heartbeat
to the primary PowerHA server and declare it down. It notifies the secondary and
all the DB2 members that the server is down. At this point the PowerHA services
are unavailable until the secondary takes over. Before the secondary can take over,
it needs to talk to all of the members to get missing data. Once the data has been
updated, it will then take over as the primary PowerHA server. At this time you
are vulnerable as the PowerHA server has no backup.Похоже на вопрос: "что будет, если упадёт обычный инстанс? вы же можете потерять все данные!".
А с какого перепугу?
Обычно есть 2 LPAR, где запущен PowerHA - первичный и вторичный.
Падает один - в течение нескольких секунд второй возобновляет обслуживание.
Падают оба одновременно, можно запустить PowerHA на выжившем LPAR, где Member работает, и тогда запустится обычная процедура crash recovery, и, если с общим диском всё в порядке, то данные не потеряются.
О каком там backup для PowerHA идёт речь - непонятно.

тут просто расжевывается почему PowerHA нужно иметь минимум два, иначе потеряв единственный PowerHA "You could lose everything". совершенно справедливо вобщем-то.

Mark BarinsteinMember никогда не запускается на другом сервере в рабочем режиме. На другом сервере запускается только уменьшенная копия ядра db2 только для целей восстановления блоков данных, с которыми работали незавершённые на момент падения транзакции. Он не начинает обслуживать клиентские транзакции при этом.
а клиентов упавшей ноды куда девают ? расскидывают по оставшимся ?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939238
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Victor MetelitsaМожно ещё повспоминать про фичи, присутствующие в DB2 и отсутствующие в Oracle - select from insert, update, delete.
а можно конкретный SQL который нельзя на оракле. я думаю returning clouse будет полным аналогом в оракле. Retrieval of result sets from an SQL data change statement .
Разница в том, что returning кладёт несколько строк в массив или коллекцию, а в db2 мне процедурный язык для обработки результатов вообще не нужен, я могу эту "виртуальную" таблицу сразу же в соединении с другими таблицами использовать в этом же запросе.
Да ещё include поля есть (чуть ниже в том же дереве слева есть пример).
Yo.!а клиентов упавшей ноды куда девают ? расскидывают по оставшимся ?Да.
Причем по желанию (настройки сессии) сессия может либо все свои транзакции на одном мембере выполнять, либо новую транзакцию на новом (если оно вдруг определит, что новый мембер менее загружен, чем остальные), и всё это прозрачно для приложения.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939250
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!тут просто расжевывается почему PowerHA нужно иметь минимум два, иначе потеряв единственный PowerHA "You could lose everything". совершенно справедливо вобщем-то.Абсолютно не справедливо.
Объясните, каким образом даже при одном PowerHA при его падении я теряю "всё", если это "всё" находится на общем диске?
Я ведь могу запустить его на выжившем мембере...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939256
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Mark Barinstein

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

Mark BarinsteinВы умалчиваете про расходы на undo.
А ведь при каждом изменении всего одной строки в блоке, оракл тянет весь блок в undo, причём таких копий одного блока в undo может быть много (второе приложение изменило строку в том же блоке, и вот она - ещё одна копия и т.д.). Я прав?

да, все так. оракл пишет в UNDO (+REDO поверх UNDO) но при этом не задерживается на блокировках и не юлозит по огромным lock list'ам, устраивая эскалацию блокировок с деградацией concurency. самое яркое доказательство того, что писанина в UNDO не иребует больших расходов TPC-C. уж вроде бы казалось бы идеальный тест для блокировочника, транзакции нигде не сталкиваются, блокировки нигде не задерживают, а оракл со своей писаниной в UNDO все равно впереди db2 на одинаковом железе.

Mark BarinsteinПросто поверьте мне, как админу, что этого lock list в db2 по сравнению с другими потребителями памяти (буферы, например) обычно почти не видно.
не поверю, эскалация не от хорошей жизни появляется. на сколько я помню IBM 540 байт на лок кушает, т.е. 2М локов уже гиг памяти выжрет.

Mark BarinsteinТак что вы должны понимать, что весьма удобную штуку для некоторых алгоритмов, как версионность, вы получает ценой значительно бОльших накладных расходов, чем в db2.
это распространненый миф, тесты TPC-C их развенчали много лет назад.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939273
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinYo.!тут просто расжевывается почему PowerHA нужно иметь минимум два, иначе потеряв единственный PowerHA "You could lose everything". совершенно справедливо вобщем-то.Абсолютно не справедливо.
Объясните, каким образом даже при одном PowerHA при его падении я теряю "всё", если это "всё" находится на общем диске?
Я ведь могу запустить его на выжившем мембере...
вместо выжившего. потеряв PowerHA вы теряете доступность всего кластера, то самое "все". а как вы поднимать потом будете из бэкапа или заменой ноды это уже не суть важно.

Mark Barinsteinя могу эту "виртуальную" таблицу сразу же в соединении с другими таблицами использовать в этом же запросе.
ну может конечно где-то такое может пригодиться, но я не встречал потребности больше чем вернуть значение сиквенса из инсерта. ну пусть будет зачет, тогда вам в ответ сразу 2: автономные транзакции и кластер (не путать с RAC) в oracle xe
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939334
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!да, все так. оракл пишет в UNDO (+REDO поверх UNDO) но при этом не задерживается на блокировках и не юлозит по огромным lock list'ам, устраивая эскалацию блокировок с деградацией concurency. самое яркое доказательство того, что писанина в UNDO не иребует больших расходов TPC-C. уж вроде бы казалось бы идеальный тест для блокировочника, транзакции нигде не сталкиваются, блокировки нигде не задерживают, а оракл со своей писаниной в UNDO все равно впереди db2 на одинаковом железе. Вы сравниваете разные версии тестов 5.4 против 5.3, на разных OS (rhel против aix), да ещё у оракла дисков и контроллеров больше.
Yo.!
Mark BarinsteinПросто поверьте мне, как админу, что этого lock list в db2 по сравнению с другими потребителями памяти (буферы, например) обычно почти не видно.
не поверю, эскалация не от хорошей жизни появляется. на сколько я помню IBM 540 байт на лок кушает, т.е. 2М локов уже гиг памяти выжрет.
locklist

db2On all platforms, each lock requires 128 or 256 bytes of the lock list, depending on whether other locks are held on the object:

* 256 bytes are required to hold a lock on an object that has no other locks held on it
* 128 bytes are required to record a lock on an object that has an existing lock held on it.
...
Recommendation:
...
Calculate an upper bound for the size of your lock list:

(512 * 256 * maxappls) / 4096
Для 1000 приложений рекомендованный максимум:
512*256*1000 ~ 130M
У сапа есть рекомендации начать с 40 000 страниц = 160M
Огромный, говорите, этот максимум?
Эскалации возникают от того, что либо:
- место в locklist закончилось
- одно приложение стало занимать места в locklist больше, чем maxlock %
Кстати, во второй ссылке указывается, что блокировки вдвое меньше занимают места:
db2On 64-bit platforms (except HP-UX), each lock requires 64 or 128 bytes of the lock list, depending on whether other locks are held on the object:

* 128 bytes are required to hold a lock on an object that has no other locks held on it.
* 64 bytes are required to record a lock on an object that has an existing lock held on it.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939348
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!вместо выжившего. потеряв PowerHA вы теряете доступность всего кластера, то самое "все". а как вы поднимать потом будете из бэкапа или заменой ноды это уже не суть важно.Потерять "всё" и потерять временно доступность кластера - это не одно и то же.
Здесь оракл слишком вольно бросается словами.
Yo.!ну пусть будет зачет, тогда вам в ответ сразу 2: автономные транзакции и кластер (не путать с RAC) в oracle xe О! Первый зачёт! Пойду отпраздную :)
Autonomous transactions are supported .
Не смог найти ссылку на кластер с XE.
Не поможете?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939417
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinВы сравниваете разные версии тестов 5.4 против 5.3, на разных OS (rhel против aix), да ещё у оракла дисков и контроллеров больше.

21 April 2005 Revision 5.4 Modified Clause 3.3.3.2, Modified Clause 5.3.3, Integrated TPC Pricing Specification

Clause 3.3.3.2 - тесты на консистентность, 5.3.3 - дефиниция response time, т.е. ничего что могло бы хоть как-то повлиять не результат не изменилось.
мне кажется вполне логично сравнивать db2 на родной для него платформе aix и oracle на родном для него linux, это те платформы где каждая субд может показать максимум.
терял бы оракл много от писанины в UNDO, мы бы в этом тесте увидели бы другой результат и кол-во дисков никак бы ему не помогло.

Mark BarinsteinДля 1000 приложений рекомендованный максимум:
512*256*1000 ~ 130M
У сапа есть рекомендации начать с 40 000 страниц = 160M
Огромный, говорите, этот максимум?

интересно, а в z/OS 540 байт, ну да ладно не про него речь.
какой-же это максимум, это прикидка сколько максимум скушают если лочить будут не более 512 записей. у вас прикладухи по 512 записей читают ? да отчет которому понадобиться уровень выше Read Commited больше затребует, чем вы прикинули.
в общем камешек в db2 почему лимит в разы выше, чем ораклу устанавливать пришлось.

Mark Barinstein
Не смог найти ссылку на кластер с XE.
Не поможете?

conceptsClusters are groups of one or more tables physically stored together because they share common columns and are often used together. Because related rows are physically stored together, disk access time improves.

Like indexes, clusters do not affect application design. Whether a table is part of a cluster is transparent to users and to applications. Data stored in a clustered table is accessed by SQL in the same way as data stored in a nonclustered table.

http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/intro.htm#sthref77

вот тут мы эффективность с mssql меряли
/topic/593514&pg=8#6324928
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939436
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinПотерять "всё" и потерять временно доступность кластера - это не одно и то же.
Здесь оракл слишком вольно бросается словами.

не согласен, раз уж речь о high avilability то слова совершенно справедливы. а то при наличии бэкапа на ленте множно и при выгорании всех нод говорить что вобщем-то все не потеряно.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939569
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
А это ничего, что вариант с джоинами работает как минимум не быстрее, а в ряде случаев
медленнее?.. Функция не будет читать t3 если значение найдено в t2. Join - будет всегда.

Видите ли, вы учитываете далеко не все расходы. Скажем, затраты на сам вызов функции. Потом,
Код: plaintext
1.
2.
select t2.val
from t1 join t2 on t1.some_id=t2.some_id
и
Код: plaintext
1.
2.
select (select t2.val from t2 where t1.some_id=t2.some_id) 
from t1 
выполняются по-разному.

И, конечно, я постарался бы приложить все усилия, чтобы t2 и t3 как-то объединить.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939576
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! Victor Metelitsa Yo.! , советую оценивать полезность фич.

Например, у DB2 Express-C нет функции по индексам, а у Oracle XE, предположим (я его документацию не читал), есть. Что это значит? Некоторые таблицы в DB2 будут немного шире, чем могли бы.

Теперь вспомним пару подробностей про Oracle XE, Первая - ограничение всего 4 гига данных, что означает, что разумный разработчик будет его использовать только для баз с много меньшим размером данных, чтобы в обозримом будущем не выйти за рамки.

ну с 2 ядрами и 2гб у дб2 DWH тоже не построишь

Совсем недавно это были приличные машины.

Victor MetelitsaИтак, после этого, как отсутствие функциональных индексов в DB2 послужит аргументом в пользу Oracle в сравнении "DB2 Express-C vs Oracle XE"?
ну на предыдущей странице индекс по регеспу я показывал.

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

Victor MetelitsaМожно ещё повспоминать про фичи, присутствующие в DB2 и отсутствующие в Oracle - select from insert, update, delete.
а можно конкретный SQL который нельзя на оракле. я думаю returning clouse будет полным аналогом в оракле.

Марк написал.

Victor MetelitsaМежду тем... ну, вот то, что я вижу постоянно в поддерживаемых мой системах. К примеру, запросы, выглядящие так
тут не понял, набрали быдлокодеров которые не знают про coalesce/decode, а оракл то тут причем ?

по pureScale, допустим на поверах выкрутиться можно LPARами, а на x86 вы на вмваре предлагаете сажать

Не понимаю, о каких pureScale или RAC'ах можно разговаривать в теме про Oracle XE и DB2 Express-C.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939583
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Victor Metelitsa
Можно ещё повспоминать про фичи, присутствующие в DB2 и отсутствующие в Oracle - select
from insert, update, delete.

Это так в фантазиях IBM выглядят стандартные insert/update/delete...returning?..

Ага, про ораклиные стандартные я написал "Есть какие-то костыли, но на уровне PL/SQL". (Может, не совсем точно выразился, но суть, наверное, понятна).
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939596
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!мне кажется вполне логично сравнивать db2 на родной для него платформе aix и oracle на родном для него linux, это те платформы где каждая субд может показать максимум.
терял бы оракл много от писанины в UNDO, мы бы в этом тесте увидели бы другой результат и кол-во дисков никак бы ему не помогло.Там db2 на rhel и oracle на aix, а не наоборот.
Yo.!какой-же это максимум, это прикидка сколько максимум скушают если лочить будут не более 512 записей. у вас прикладухи по 512 записей читают ? да отчет которому понадобиться уровень выше Read Commited больше затребует, чем вы прикинули.
в общем камешек в db2 почему лимит в разы выше, чем ораклу устанавливать пришлось.Эта цифра выведена из практики - ведь не все 1000 приложений одновременно отчёты делают.
Люди проанализировали работающие системы, и выдали средние цифры.
И в реальности так оно примерно и получается.

conceptsClusters are groups of one or more tables physically stored together because they share common columns and are often used together. Because related rows are physically stored together, disk access time improves.

Like indexes, clusters do not affect application design. Whether a table is part of a cluster is transparent to users and to applications. Data stored in a clustered table is accessed by SQL in the same way as data stored in a nonclustered table.
И часто они используются в реальности?
По части извращённого хранения у нас свои примеры есть:
Range-clustered tables .
Они даже в tpc-c используются.
Есть более приближенные к реальности вещи:
Есть кластерные индексы, при которых данные в таблице пытаются хранить в порядке следования ссылок на них в индексе.
Есть табличное партиционирование для бедных:
вы делаете union all view на таблицы одинаковой структуры, на каждую таблицу - check constraint на "ключ партиционирования", чтоб любая запись могла содержаться только в одной таблице.
Потом вы можете делать insert / update / delete в эту вью, и запись будет в результате попадать в нужную таблицу (ну и select, естественно).
И даже partition elimination будет происходить, как при "взрослом" партиционировании.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939597
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsaвыполняются по-разному.

Если не забыть left, то с большой вероятностью и тот и другой сведутся к nested loop.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939599
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.! Mark BarinsteinПотерять "всё" и потерять временно доступность кластера - это не одно и то же.
Здесь оракл слишком вольно бросается словами.

не согласен, раз уж речь о high avilability то слова совершенно справедливы. а то при наличии бэкапа на ленте множно и при выгорании всех нод говорить что вобщем-то все не потеряно.В любом случае речь тут ведётся о событии (падение 2-х серверов одновременно), которое вы навряд ли вообще встретите в реальности, особенно, если речь о System p.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939622
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor Metelitsa
Эта цифра выведена из практики - ведь не все 1000 приложений одновременно отчёты делают.
Люди проанализировали работающие системы, и выдали средние цифры.
И в реальности так оно примерно и получается.

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

Mark Barinstein
Там db2 на rhel и oracle на aix, а не наоборот.

действительно наоборот, но не думаю, что это кардинально повлияло на тест.

Mark Barinstein
По части извращённого хранения у нас свои примеры есть:
Range-clustered tables.
Они даже в tpc-c используются.
Есть более приближенные к реальности вещи:
Есть кластерные индексы, при которых данные в таблице пытаются хранить в порядке следования ссылок на них в индексе.
Есть табличное партиционирование для бедных:
вы делаете union all view на таблицы одинаковой структуры, на каждую таблицу - check constraint на "ключ партиционирования", чтоб любая запись могла содержаться только в одной таблице.
Потом вы можете делать insert / update / delete в эту вью, и запись будет в результате попадать в нужную таблицу (ну и select, естественно).
И даже partition elimination будет происходить, как при "взрослом" партиционировании.

а это все и в оракле есть: range-partitioning, index orgonized table и т.п.

Mark Barinstein
В любом случае речь тут ведётся о событии (падение 2-х серверов одновременно), которое вы навряд ли вообще встретите в реальности, особенно, если речь о System p.

бывает, бывает. и самолеты в окошко влетают и кластер из мегонадежнных мейнфремов (parallel syplex) бывает падает.

Victor Metelitsa
Не понимаю, о каких pureScale или RAC'ах можно разговаривать в теме про Oracle XE и DB2 Express-C.

да вы на тему торпика не глядите, все равно разговор закончиться firebird vs oracle
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939691
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!ну если у вас задача чистый tpc-c гонять то может быть, а вот пару одновременных отчетов даже по миллионным табличкам явно другие цифирки в среднем выдадут.Да никто не гоняет сканирующие отчёты по многомиллионным табличкам с RS или RR изоляцией, это никому не нужно.
Если лень нормальные отчётные системы делать, то достаточно CS дефолтового или даже UR.
А вообще, вы так утверждаете, как будто у вас большой опыт администрирования db2.
Типа, мне по-боку, что там советуется, я сам лучше угадываю...
Yo.!а это все и в оракле есть: range-partitioning, index orgonized table и т.п.Range-partitioning в XE?
Yo.!бывает, бывает. и самолеты в окошко влетают и кластер из мегонадежнных мейнфремов (parallel syplex) бывает падает.Здесь неплохо бы смотрелась подтверждающая ссылка (про упавший parallel sysplex).
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939747
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinДа никто не гоняет сканирующие отчёты по многомиллионным табличкам с RS или RR изоляцией, это никому не нужно.
Если лень нормальные отчётные системы делать, то достаточно CS дефолтового или даже UR.
А вообще, вы так утверждаете, как будто у вас большой опыт администрирования db2.
Типа, мне по-боку, что там советуется, я сам лучше угадываю...

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

Mark BarinsteinRange-partitioning в XE?
нет, партитионинг как и в дб2 только в Enterprise

Mark BarinsteinЗдесь неплохо бы смотрелась подтверждающая ссылка (про упавший parallel sysplex).
мне не жалко
http://www.danskebank.com/en-uk/press/News/Pages/pr20030403a.aspx
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939767
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.! Mark BarinsteinRange-partitioning в XE?
нет, партитионинг как и в дб2 только в EnterpriseА я про партиционирование в express-c писАл.
Yo.!
Mark BarinsteinЗдесь неплохо бы смотрелась подтверждающая ссылка (про упавший parallel sysplex).
мне не жалко
http://www.danskebank.com/en-uk/press/News/Pages/pr20030403a.aspx Это софтовая ошибка, может случиться у всех.
Я, наверное, не правильно выразился в вопросе.
В Parallel Sysplexs, откуда архитектура db2 purescale взята, роль PowerHA играют железки, называеимые Coupling Facility (CF).
Так вот, интересует ссылка, где Parallel Sysplex упал из-за одновременного отказа всех CF, мы же именно одновременный отказ обоих PowerHA имеем ввиду.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939777
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!мне не жалко
http://www.danskebank.com/en-uk/press/News/Pages/pr20030403a.aspx В догонку:
Там сам sysplex-то не упал.
Там всего лишь внутри одного из приложений в parallel sysplex (db2) произошла ошибка.
Это всё равно как на вопрос "приведите пример падения ОС" ответить, что, мол, вот случай, когда с данными в db2 на этой ОС случилась какая-то лажа - вот оно, падение, и произошло...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939786
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinА я про партиционирование в express-c писАл.

я увидел что этот Range-partitioning в рвазделе "Table partitioning and data organization schemes" и решил, что это аналог range partitioning в оркале. сейчас пригляделся, понял что не оно, но что это даже со второго раза не понял.

Mark Barinstein
Так вот, интересует ссылка, где Parallel Sysplex упал из-за одновременного отказа всех CF, мы же именно одновременный отказ обоих PowerHA имеем ввиду.
я говорил о падающих мейнфреймах с Parallel Sysplex и вобщем-то не соврал.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939848
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939943
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Если не забыть left, то с большой вероятностью и тот и другой сведутся к nested loop.

Вы просто потестируйте. Начните с примера, который я привёл вначале. Функция или два левых джойна - что быстрее и насколько? Я многократно убеждался, что джойны, мягко говоря, много лучше. На всякий случай сделал сейчас ещё один тест. Пожалуй, переборщил с количеством данных (в таблице t1, реальные данные с купонами авиабилетов, 46 миллионов записей, в таблице t2 > 2000 городов и в t3 > 500 аэропортов) - с джойнами выполнилось за пару минут на 9-м и 10-м оракле (запустил одновременно на двух серверах), а с функцией же... прошло больше часа, но как бы месяц или год не потребовался.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939946
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(я group by сделал)
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36939959
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.! Mark BarinsteinА я про партиционирование в express-c писАл.
я увидел что этот Range-partitioning в рвазделе "Table partitioning and data organization schemes" и решил, что это аналог range partitioning в оркале. сейчас пригляделся, понял что не оно, но что это даже со второго раза не понял.
Range partitioning in express-c
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
create table part_t1 (id int not null, v varchar( 10 ), d date not null, constraint t1_c check(d<'2010-11-01')) in userspace1;
create table part_t2 (id int not null, v varchar( 10 ), d date not null, constraint t2_c check(d between '2010-11-01' and '2010-11-30')) in userspace1;
create table part_t3 (id int not null, v varchar( 10 ), d date not null, constraint t3_c check(d>'2010-11-30')) in userspace1;
create view  part_v as 
select id, v, d from part_t1
  union all 
select id, v, d from part_t2
  union all 
select id, v, d from part_t3
with row movement;
create sequence part_s;

insert into part_v (id, v, d)
select nextval for part_s, v, date(d)
from table(values
  ('row1', '2010-01-01')
, ('row2', '2010-11-05')
, ('row3', '2010-12-05')) t(v, d);

select * from part_v;

ID          V          D         
----------- ---------- ----------
           1  row1        01 . 01 . 2010 
           2  row2        05 . 11 . 2010 
           3  row3        05 . 12 . 2010 

select * from part_t1;

ID          V          D         
----------- ---------- ----------
           1  row1        01 . 01 . 2010 

select * from part_t2;

ID          V          D         
----------- ---------- ----------
           2  row2        05 . 11 . 2010 

select * from part_t3;

ID          V          D         
----------- ---------- ----------
           3  row3        05 . 12 . 2010 

update part_v set d='2010-11-04' where id= 1 ;

select * from part_t1;

ID          V          D         
----------- ---------- ----------

select * from part_t2;

ID          V          D         
----------- ---------- ----------
           2  row2        05 . 11 . 2010 
           1  row1        04 . 11 . 2010 
Чем не партиционирование?
Можно так в XE?
Yo.!я говорил о падающих мейнфреймах с Parallel Sysplex и вобщем-то не соврал.
Ну, если договориться бабушку называть трамваем, то именование бабушки не будет считаться ложью.
Но говорить про случай, когда в db2 на мейнфрейме появились проблемы из-за софта и отказавшего диска, как про падение мейнфрейма или сисплекса (где вы там такое прочитали?), это как в шуточном примере выше - при определённых соглашениях не будет считаться ложью.

Причём:
Danske Bank GroupSystem operations at the Bank’s centre in Brabrand were largely unaffected, although the functioning of several systems was affected by the lack of data from the Ejby centre.
...
On Monday, March 17, Danske Bank settled all accumulated transactions with counter-parties outside the Bank and all operations were normal.
...
During the system problems, Danske Bank was not at risk for data loss
От такого рода ошибок не спасёт ни rac, ни purescale, ни sysplex - прекратят обслуживание все.
Я это к чему прицепился: когда оракл задаётся вопросом, что будет, если оба сервера PowerHA упадут, то надо бы самому подумать, а какова вероятность такого события?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36940059
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Месяц-таки не потребовался, разница оказалась не такая большая - всего лишь в 26 раз на 10gR2 и в 36 раз на 9iR2... (компьютеры сильно разные).
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36940260
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinЧем не партиционирование?
Можно так в XE?

а можно показать план для такого запроса:
select * from part_v where d between '2010-01-01' and '2010-04-04';

интересует догадается ли он сканировать одну партицию ?
в oracle xe с его 4гб такое не пригодиться, но работать думаю будет. в стандарт и SE1 эдишенах можно заюзать древнюю фичу из Oracle 7: Partition Views . там получается, что если включить PARTITION_VIEW_ENABLED то оптимизатор будет сканировать только нужную таблицу под низом от вью. начиная с 10g PARTITION_VIEW_ENABLED hidden, но в 11.2 еще работает. на само вью можно одеть INSTEAD OF Triggers и уже ими расбрасывать записи по табличкам.

Mark Barinstein
Я это к чему прицепился: когда оракл задаётся вопросом, что будет, если оба сервера PowerHA упадут, то надо бы самому подумать, а какова вероятность такого события?
1. что то вы увлеклись выдумыванием за оракл. оракл утверждал что потеряв один PowerHA вы теряете все и потому вам придется как минимум дублировать PowerHA.
2. вероятность выхода из строя двух PowerHA отлична от нуля и 100% если в окошко влетает самолет, например.
3. вы так и не ответили, что делать на x86. если железячки только две на вмваре весь кластер сажать ?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36940349
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.![2. вероятность выхода из строя двух PowerHA отлична от нуля и 100% если в окошко влетает самолет, например.Нет, ну забавный же человек! А ничего, что сам Оракл считает RAC скорее Scalability решением, а не High Availability ? И Оракл таки прав - ибо, конечно, с куда бОльшей вероятностью накроется общий shared storage, а не оба PowerHA, например. И при прилете в окошко самолета всем будет глубоко пофиг, называлась раньше груда перемешанных с shared storage обломков RAC или pureScale :)
От самолета же может спасти только нормальный разнесенный по разным окошкам HA, который (Data Gard) в Оракл идет только платным довеском и только к Enterprise (не считая Windows-огрызка Fail Safe). А в DB2 - HADR уже в Express FTL входит в стоимость, бесплатным довеском за те же 2000$ в год.
Yo.!3. вы так и не ответили, что делать на x86. если железячки только две на вмваре весь кластер сажать ?Вот до сих пор не могу понять - ну кому окромя маркетологов нужны RAC/pureScale на 2-х железячках? При том, что оба в Standard/Workgroup вариантах лимитированы 2-мя сокетами на каждую (4-мя на весь кластер)?
Ну, то есть понятно, что Оракл предложил RAC в Standard чтобы не предлагать там же весьма платный Data Gard. А IBM дал pureScale в Workgroup потому что у Оракла RAC в Standard есть. Но и то, и другое ИМХО мало кому надо если доступен нормальный HA.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36940450
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Mark BarinsteinЧем не партиционирование?
Можно так в XE?

а можно показать план для такого запроса:
select * from part_v where d between '2010-01-01' and '2010-04-04';

интересует догадается ли он сканировать одну партицию ?
Догадается.
Access plan
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
DB2 Universal Database Version 9.5, 5622-044 (c) Copyright IBM Corp. 1991, 2007
Licensed Material - Program Property of IBM
IBM DATABASE 2 Explain Table Format Tool



******************** EXPLAIN INSTANCE ********************

DB2_VERSION: 		09.05.5
SOURCE_NAME: 		SQLC2G15
SOURCE_SCHEMA: 		NULLID  
SOURCE_VERSION: 	
EXPLAIN_TIME: 		2010-11-06-17.04.23.984000 
EXPLAIN_REQUESTER: 	BARIN_M 

Database Context:
----------------
	Parallelism: 		None
	CPU Speed: 		1,495757e-007
	Comm Speed: 		100
	Buffer Pool size: 	1250
	Sort Heap size: 	256
	Database Heap size: 	600
	Lock List size: 	50
	Maximum Lock List: 	22
	Average Applications: 	1
	Locks Available: 	935

Package Context:
---------------
	SQL Type: 		Dynamic
	Optimization Level: 	5
	Blocking: 		Block All Cursors
	Isolation Level: 	Cursor Stability



---------------- STATEMENT 1  SECTION 203 ----------------
	QUERYNO: 		1
	QUERYTAG: 		                    
	Statement Type: 	Select
	Updatable: 		No
	Deletable: 		No
	Query Degree: 		1

Original Statement:
------------------
select * 
from part_v 
where d between '2010-01-01' and '2010-04-04'


Optimized Statement:
-------------------
SELECT Q1.ID AS "ID", Q1.V AS "V", Q1.D AS "D" 
FROM BARIN_M.PART_T1 AS Q1 
WHERE ('01.01.2010' <= Q1.D) AND (Q1.D <= '04.04.2010')

Access Plan:
-----------
	Total Cost: 		7,56822
	Query Degree:		1

      Rows 
     RETURN
     (   1)
      Cost 
       I/O 
       |
       0,1 
     TBSCAN
     (   2)
     7,56822 
        1 
       |
        1 
 TABLE: BARIN_M 
     PART_T1
       Q1



Extended Diagnostic Information:
--------------------------------

Diagnostic Identifier: 	1
Diagnostic Details: 	EXP0020W  Table has no statistics.  The table
			"BARIN_M "."PART_T1" has not had runstats run on it.
			 This may result in a sub-optimal access plan and
			poor performance.

Plan Details:
-------------


	1) RETURN: (Return Result)
		Cumulative Total Cost: 		7,56822
		Cumulative CPU Cost: 		54980,3
		Cumulative I/O Cost: 		1
		Cumulative Re-Total Cost: 	0,000656238
		Cumulative Re-CPU Cost: 	4387,33
		Cumulative Re-I/O Cost: 	0
		Cumulative First Row Cost: 	7,56797
		Estimated Bufferpool Buffers: 	1

		Arguments:
		---------
		BLDLEVEL: (Build level)
			DB2 v9.5.500.784 : s091123
		HEAPUSE : (Maximum Statement Heap Usage)
			80 Pages
		PREPTIME: (Statement prepare time)
			        58 milliseconds
		STMTHEAP: (Statement heap size)
			2048

		Input Streams:
		-------------
			2) From Operator #2

				Estimated number of rows: 	0,1
				Number of columns: 		3
				Subquery predicate ID: 		Not Applicable

				Column Names:
				------------
				+Q2.D+Q2.V+Q2.ID


	2) TBSCAN: (Table Scan)
		Cumulative Total Cost: 		7,56822
		Cumulative CPU Cost: 		54980,3
		Cumulative I/O Cost: 		1
		Cumulative Re-Total Cost: 	0,000656238
		Cumulative Re-CPU Cost: 	4387,33
		Cumulative Re-I/O Cost: 	0
		Cumulative First Row Cost: 	7,56797
		Estimated Bufferpool Buffers: 	1

		Arguments:
		---------
		MAXPAGES: (Maximum pages for prefetch)
			ALL
		PREFETCH: (Type of Prefetch)
			NONE
		ROWLOCK : (Row Lock intent)
			NEXT KEY SHARE
		SCANDIR : (Scan Direction)
			FORWARD
		SKIP_DEL: (Skip Deleted Rows)
			TRUE
		SKIP_INS: (Skip Inserted Rows)
			TRUE
		TABLOCK : (Table Lock intent)
			INTENT SHARE
		TBISOLVL: (Table access Isolation Level)
			CURSOR STABILITY

		Predicates:
		----------
		2) Sargable Predicate
			Comparison Operator: 		Less Than or Equal (<=)
			Subquery Input Required: 	No
			Filter Factor: 			0,333333

			Predicate Text:
			--------------
			('01.01.2010' <= Q1.D)

		3) Sargable Predicate
			Comparison Operator: 		Less Than or Equal (<=)
			Subquery Input Required: 	No
			Filter Factor: 			0,333333

			Predicate Text:
			--------------
			(Q1.D <= '04.04.2010')


		Input Streams:
		-------------
			1) From Object BARIN_M.PART_T1

				Estimated number of rows: 	1
				Number of columns: 		4
				Subquery predicate ID: 		Not Applicable

				Column Names:
				------------
				+Q1.$RID$+Q1.D+Q1.V+Q1.ID


		Output Streams:
		--------------
			2) To Operator #1

				Estimated number of rows: 	0,1
				Number of columns: 		3
				Subquery predicate ID: 		Not Applicable

				Column Names:
				------------
				+Q2.D+Q2.V+Q2.ID


Objects Used in Access Plan:
---------------------------

	Schema: BARIN_M 
	Name: 	PART_T2
	Type: 	Table (reference only)

	Schema: BARIN_M 
	Name: 	PART_T3
	Type: 	Table (reference only)

	Schema: BARIN_M 
	Name: 	PART_V
	Type: 	View (reference only)

	Schema: BARIN_M 
	Name: 	PART_T1
	Type: 	Table
			Time of creation: 		2010-11-06-10.22.52.390001
			Last statistics update:
			Number of columns: 		3
			Number of rows: 		1
			Width of rows: 			24
			Number of buffer pool pages: 	1
			Number of data partitions: 	1
			Distinct row values: 		No
			Tablespace name: 		USERSPACE1        
			Tablespace overhead: 		7,500000
			Tablespace transfer rate: 	0,060000
			Source for statistics: 		Single Node
			Prefetch page count: 		32
			Container extent page count: 	32
			Table overflow record count: 	0
			Table Active Blocks: 		-1
			Average Row Compression Ratio: 	-1
			Percentage Rows Compressed: 	-1
			Average Compressed Row Size: 	-1

Yo.!в oracle xe с его 4гб такое не пригодиться, но работать думаю будет. в стандарт и SE1 эдишенах можно заюзать древнюю фичу из Oracle 7: Partition Views . там получается, что если включить PARTITION_VIEW_ENABLED то оптимизатор будет сканировать только нужную таблицу под низом от вью. начиная с 10g PARTITION_VIEW_ENABLED hidden, но в 11.2 еще работает. на само вью можно одеть INSTEAD OF Triggers и уже ими расбрасывать записи по табличкам.Да, наверное можно.
Только это целую программу в instead of update придётся написать, чтоб корректно обработать возможное перемещение строки из партиции в другую партицию.
Хотел бы я взглянуть на такой код (а ведь все три триггера ещё и переписывать надо будет при attach / detach партиции), скажем, для 12 партиций...
Yo.!3. вы так и не ответили, что делать на x86. если железячки только две на вмваре весь кластер сажать ?Нет, на x86 сейчас гипервизоры не поддерживаются.
Т.е. по-хорошему надо будет иметь 2 отдельные железки для PowerHA.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36941057
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglSenya_L, вопрос малоинтересный - а не все ли равно, как сделано внутри черной коробочки?Мне - да. Тебе вижу тоже. Но дело в другом. Yo как-то критиковал Firebird за то, что у него нет нормального SMP (тут пока не поспоришь до выхода 3-ки) и в частности утверждал, что CS - это несерьезно. Так как же у Oracle построена архитектура? Как interprocess communication организован?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36941117
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinДа, наверное можно.
Только это целую программу в instead of update придётся написать, чтоб корректно обработать возможное перемещение строки из партиции в другую партицию.

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

Mark Barinstein
Хотел бы я взглянуть на такой код (а ведь все три триггера ещё и переписывать надо будет при attach / detach партиции), скажем, для 12 партиций...

кстати, я могу в тригере нарисовать создание "партиции" и создавать их по мере надобности автоматом.
а в дб2 есть тригеры на вью ?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36941186
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!кстати, я могу в тригере нарисовать создание "партиции" и создавать их по мере надобности автоматом.
а в дб2 есть тригеры на вью ?DDL в instead of tirgger? Или в другом каком?
Instead of triggers в db2 .
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36941204
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Mark BarinsteinДа, наверное можно.
Только это целую программу в instead of update придётся написать, чтоб корректно обработать возможное перемещение строки из партиции в другую партицию.

ну да, одну-две минуты придется потратить на каждый тригер, не вижу в этом проблему.Тогда это не займёт у вас много времени.
Наришите, пожалуйста, тогда instead of update триггер для, скажем , 12 партиций:
- 1-я: за январь 2010 и раньше
- 10 остальных, по месяцу 2010-го, начиная с февраля
- последняя, за декабрь 2010 и дальше

а потом сравним элегантность решений - в db2 и вашего...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36943165
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein
Тогда это не займёт у вас много времени.
Наришите, пожалуйста, тогда instead of update триггер для, скажем , 12 партиций:
- 1-я: за январь 2010 и раньше
- 10 остальных, по месяцу 2010-го, начиная с февраля
- последняя, за декабрь 2010 и дальше

а потом сравним элегантность решений - в db2 и вашего...

ну вот на это 3 минуты ушло
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
create or replace
TRIGGER tgr_partv_insert
INSTEAD OF INSERT
ON part_v
FOR EACH ROW
DECLARE
  m_table varchar2( 7 ) ;  
  plsql_block varchar2( 2000 );
  
  m_id int;
  m_v varchar2( 10 );
  m_d date;
  
BEGIN
  m_table :='PART_12' ;
  if (to_char(:NEW.d,'yyyymm') <= '201001') then m_table:='PART_01';  end if ;
  if (to_char(:NEW.d,'yyyymm') <= '201012' and to_char(:NEW.d,'yyyymm')>='201002') then m_table:='PART_'||to_char(:NEW.d,'mm');  end if ;
  
  plsql_block:='insert into '|| m_table||' values (:m_id,:m_v,:m_d)';
  dbms_output.put_line(plsql_block);
  
  m_id:= :NEW.id;
  m_v := :NEW.v ;
  m_d := :NEW.d ;
  
  EXECUTE IMMEDIATE plsql_block USING IN OUT m_id, m_v, m_d;

END;

наверно можно было элегантней, но лень в доку лезть.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
SQL> insert into part_v values ( 1 ,'shit',to_date('01.01.2010','dd.mm.yyyy')) ;
insert into PART_01 values (:m_id,:m_v,:m_d)

 1  row created.

SQL> insert into part_v values ( 1 ,'shit',to_date('01.02.2010','dd.mm.yyyy')) ;
insert into PART_02 values (:m_id,:m_v,:m_d)

 1  row created.

SQL> insert into part_v values ( 1 ,'shit',to_date('01.03.2010','dd.mm.yyyy')) ;
insert into PART_03 values (:m_id,:m_v,:m_d)

 1  row created.

SQL> insert into part_v values ( 1 ,'shit',to_date('01.01.2009','dd.mm.yyyy')) ;
insert into PART_01 values (:m_id,:m_v,:m_d)

 1  row created.

SQL> insert into part_v values ( 1 ,'shit',to_date('01.01.2011','dd.mm.yyyy')) ;
insert into PART_12 values (:m_id,:m_v,:m_d)

 1  row created.

SQL> select * from part_01 ;

        ID V          D
---------- ---------- ------------------
          1  shit        01 -JAN- 10 
          1  shit        01 -JAN- 09 

SQL> select * from part_02 ;

        ID V          D
---------- ---------- ------------------
          1  shit        01 -FEB- 10 

SQL> select * from part_03 ;

        ID V          D
---------- ---------- ------------------
          1  shit        01 -MAR- 10 

SQL> select * from part_12 ;

        ID V          D
---------- ---------- ------------------
          1  shit        01 -JAN- 11 

исходые данные

create table part_01 (id int not null, v varchar(10), d date not null) ;
create table part_02 (id int not null, v varchar(10), d date not null) ;
create table part_03 (id int not null, v varchar(10), d date not null) ;
create table part_04 (id int not null, v varchar(10), d date not null) ;
create table part_05 (id int not null, v varchar(10), d date not null) ;
create table part_06 (id int not null, v varchar(10), d date not null) ;
create table part_07 (id int not null, v varchar(10), d date not null) ;
create table part_08 (id int not null, v varchar(10), d date not null) ;
create table part_09 (id int not null, v varchar(10), d date not null) ;
create table part_10 (id int not null, v varchar(10), d date not null) ;
create table part_11 (id int not null, v varchar(10), d date not null) ;
create table part_12 (id int not null, v varchar(10), d date not null) ;

create view part_v as
select id, v, d from part_01
union all
select id, v, d from part_02
union all
select id, v, d from part_03
union all
select id, v, d from part_04
union all
select id, v, d from part_05
union all
select id, v, d from part_06
union all
select id, v, d from part_07
union all
select id, v, d from part_08
union all
select id, v, d from part_09
union all
select id, v, d from part_10
union all
select id, v, d from part_11
union all
select id, v, d from part_12;


попзжей включу PARTITION_VIEW_ENABLED, проверить план
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36943311
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!ну вот на это 3 минуты ушлоЛадно, не буду вас больше мучать.
На самом деле, мне был интересен instead of update, а не instead of insert.
Я просто хотел, чтоб вы оценили длину кода:
В общем случае для instead of insert и delete у вас в каждом триггере для 12-и партиций должно было бы быть по 12 if (или case с 12-ю вариантами) для выяснения имени таблицы.
А в instead of update - по 1 такому case для старой и новой таблицы-партиции и дальше:
- если таблицы совпали, то update в ней
- если нет, то delete из старой, insert в новую
И каждый раз при attach / detach все три триггера переписываются (и это кроме манипуляций с view и таблицами).

А у меня вместо всего этого только манипуляции с view и таблицами:
- если добавляется новая или удаляется старая
create or replace view part_v ...
- если самую старую очищаем и используем для нового месяца:
alter table part_t1 drop constraint t1_c;
truncate table part_t1;
alter table part_t1 add constraint t1_c check (<новый диапазон>);

Немного элегантнее получается :)
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36943453
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
согласен, чуть элегантней но не принципиально. в instead of update будет один if с проверкой и 3 динамических SQL ну еще 3 минуты кодирования. я бы не увидел особого преимущества и если бы на пару часов кодирования была бы разница, главное что работать это дело будет так же эффективно.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36943816
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!согласен, чуть элегантней но не принципиально. в instead of update будет один if с проверкой и 3 динамических SQL ну еще 3 минуты кодирования. я бы не увидел особого преимущества и если бы на пару часов кодирования была бы разница, главное что работать это дело будет так же эффективно.Когда это Динамический SQL = Статическому SQL по быстроте?? Такие вещи как Планы выполнения и их кеширование и т.д. - давным давно отменили-что-ли?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36943824
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WarstoneКогда это Динамический SQL = Статическому SQL по быстроте?? Такие вещи как Планы выполнения и их кеширование и т.д. - давным давно отменили-что-ли?
если речь о кешировании и планах то Динамический SQL = Статическому, думаю с рождения.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36943928
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!WarstoneКогда это Динамический SQL = Статическому SQL по быстроте?? Такие вещи как Планы выполнения и их кеширование и т.д. - давным давно отменили-что-ли?
если речь о кешировании и планах то Динамический SQL = Статическому, думаю с рождения.И оптимизация планов выполнения запросов, проводимая каждый раз при вставки одной записи, на себя ничего, конечно, не отъедает?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36943954
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarstoneYo.!пропущено...

если речь о кешировании и планах то Динамический SQL = Статическому, думаю с рождения.И оптимизация планов выполнения запросов, проводимая каждый раз при вставки одной записи, на себя ничего, конечно, не отъедает?
Но и заниматься таким было не обязательно. Если вы делаете N похожих таблиц, VIEW и триггер над ними, разумно написать скрипт, генерирующий, кроме DDL таблиц и view, код триггера, а не генерировать SQL в триггере. Да, получится длинный уродливый текст с огромным количеством IF, но вручную его писать не нужно. а будет ли этот явный код медленнее, чем то, что DB2 неявно сделает внутри себя - это вопрос, требующий проверки.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36944089
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor MetelitsaНо и заниматься таким было не обязательно. Если вы делаете N похожих таблиц, VIEW и триггер над ними, разумно написать скрипт, генерирующий, кроме DDL таблиц и view, код триггера, а не генерировать SQL в триггере. Да, получится длинный уродливый текст с огромным количеством IF, но вручную его писать не нужно. а будет ли этот явный код медленнее, чем то, что DB2 неявно сделает внутри себя - это вопрос, требующий проверки.Не надо меня этим лечить, я сам так в Pg делаю. Просто Йо, до этого не додумался... Ну или скромно умолчал... Как всегда.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36944296
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Результаты тестов на db2 9.7
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
create table part_01 (id int not null, v varchar( 10 ), d date not null, constraint t1_c check(d between '2010-01-01' and '2010-01-31')) in userspace1@
create table part_02 (id int not null, v varchar( 10 ), d date not null, constraint t1_c check(d between '2010-02-01' and '2010-02-28')) in userspace1@
create table part_03 (id int not null, v varchar( 10 ), d date not null, constraint t1_c check(d between '2010-03-01' and '2010-03-31')) in userspace1@
create table part_04 (id int not null, v varchar( 10 ), d date not null, constraint t1_c check(d between '2010-04-01' and '2010-04-30')) in userspace1@
create table part_05 (id int not null, v varchar( 10 ), d date not null, constraint t1_c check(d between '2010-05-01' and '2010-05-31')) in userspace1@
create table part_06 (id int not null, v varchar( 10 ), d date not null, constraint t1_c check(d between '2010-06-01' and '2010-06-30')) in userspace1@
create table part_07 (id int not null, v varchar( 10 ), d date not null, constraint t1_c check(d between '2010-07-01' and '2010-07-31')) in userspace1@
create table part_08 (id int not null, v varchar( 10 ), d date not null, constraint t1_c check(d between '2010-08-01' and '2010-08-31')) in userspace1@
create table part_09 (id int not null, v varchar( 10 ), d date not null, constraint t1_c check(d between '2010-09-01' and '2010-09-30')) in userspace1@
create table part_10 (id int not null, v varchar( 10 ), d date not null, constraint t1_c check(d between '2010-10-01' and '2010-10-31')) in userspace1@
create table part_11 (id int not null, v varchar( 10 ), d date not null, constraint t1_c check(d between '2010-11-01' and '2010-11-30')) in userspace1@
create table part_12 (id int not null, v varchar( 10 ), d date not null, constraint t1_c check(d between '2010-12-01' and '2010-12-31')) in userspace1@

create or replace view part_v as
          select * from part_01
union all select * from part_02
union all select * from part_03
union all select * from part_04
union all select * from part_05
union all select * from part_06
union all select * from part_07
union all select * from part_08
union all select * from part_09
union all select * from part_10
union all select * from part_11
union all select * from part_12
with row movement@

create or replace view part_v2 as
          select * from part_01
union all select * from part_02
union all select * from part_03
union all select * from part_04
union all select * from part_05
union all select * from part_06
union all select * from part_07
union all select * from part_08
union all select * from part_09
union all select * from part_10
union all select * from part_11
union all select * from part_12
@

create or replace trigger part_v2_iu
instead of insert on part_v2
referencing new as n
for each row
begin
  declare stmt varchar( 256 );
  set stmt = 
  case 
    when n.d between '2010-01-01' and '2010-01-31' then '01'
    when n.d between '2010-02-01' and '2010-02-28' then '02'
    when n.d between '2010-03-01' and '2010-03-31' then '03'
    when n.d between '2010-04-01' and '2010-04-30' then '04'
    when n.d between '2010-05-01' and '2010-05-31' then '05'
    when n.d between '2010-06-01' and '2010-06-30' then '06'
    when n.d between '2010-07-01' and '2010-07-31' then '07'
    when n.d between '2010-08-01' and '2010-08-31' then '08'
    when n.d between '2010-09-01' and '2010-09-30' then '09'
    when n.d between '2010-10-01' and '2010-10-31' then '10'
    when n.d between '2010-11-01' and '2010-11-30' then '11'
    when n.d between '2010-12-01' and '2010-12-31' then '12'
    else raise_error('75001', n.d||': date is out of range')
  end;
  set stmt='insert into part_'||stmt||'(id, v, d) values (?, ?, ?)';
  prepare s1 from stmt;
  execute s1 using n.id, n.v, n.d;
end@

-- Временная таблица, из которой будем insert select делать
declare global temporary table session.data like part_v with replace on commit preserve rows not logged@
-- Заполняем её
insert into session.data (id, v, d)
with t(id) as (values  1  union all select id+ 1  from t where id< 100000 )
select id, 'row'||id v, date('2010-01-01') + (round(rand()* 364 )) days d from t@
-- Смотрим, что получилось
select year(d) y, month(d) m, count( 1 ) c
from session.data 
group by rollup((year(d), month(d)))
order by y, m@

Y           M           C          
----------- ----------- -----------
        2010             1          8395 
        2010             2          7517 
        2010             3          8421 
        2010             4          8334 
        2010             5          8646 
        2010             6          8220 
        2010             7          8642 
        2010             8          8571 
        2010             9          8294 
        2010            10          8477 
        2010            11          8150 
        2010            12          8333 
          -           -       100000 

-- Тест скорости вставки во view без instead of triggger
values current timestamp@
insert into part_v select * from session.data@
values current timestamp@

values current timestamp

 1                          
--------------------------
 2010 - 11 - 09 - 10 . 50 . 10 . 437000 

   1  record(s) selected.


insert into part_v select * from session.data
DB20000I  The SQL command completed successfully.

values current timestamp

 1                          
--------------------------
 2010 - 11 - 09 - 10 . 50 . 12 . 203000 

-- Вот что вставилось
select year(d) y, month(d) m, count( 1 ) c
from part_v
group by rollup((year(d), month(d)))
order by y, m@

Y           M           C          
----------- ----------- -----------
        2010             1          8395 
        2010             2          7517 
        2010             3          8421 
        2010             4          8334 
        2010             5          8646 
        2010             6          8220 
        2010             7          8642 
        2010             8          8571 
        2010             9          8294 
        2010            10          8477 
        2010            11          8150 
        2010            12          8333 
          -           -       100000 

-- Удаляем всё и на всякий реорганизуем таблицы
delete from part_v@
reorg table part_01@
reorg table part_02@
reorg table part_03@
reorg table part_04@
reorg table part_05@
reorg table part_06@
reorg table part_07@
reorg table part_08@
reorg table part_09@
reorg table part_10@
reorg table part_11@
reorg table part_12@

-- Тест всавки во view с instead of trigger
values current timestamp@
insert into part_v2 select * from session.data@
values current timestamp@


values current timestamp

 1                          
--------------------------
 2010 - 11 - 09 - 10 . 55 . 06 . 218000 

   1  record(s) selected.


insert into part_v2 select * from session.data
DB20000I  The SQL command completed successfully.

values current timestamp

 1                          
--------------------------
 2010 - 11 - 09 - 10 . 55 . 33 . 156000 

   1  record(s) selected.

-- Вставилось то же самое
select year(d) y, month(d) m, count( 1 ) c
from part_v2
group by rollup((year(d), month(d)))
order by y, m@

Y           M           C          
----------- ----------- -----------
        2010             1          8395 
        2010             2          7517 
        2010             3          8421 
        2010             4          8334 
        2010             5          8646 
        2010             6          8220 
        2010             7          8642 
        2010             8          8571 
        2010             9          8294 
        2010            10          8477 
        2010            11          8150 
        2010            12          8333 
          -           -       100000 
В итоге для db2 имеем для вставки insert select из временной таблицы для 100 000 записей (ноут, 1 ядро t1300 1.66 GHz, винт 5400 rpm):
- без instead of trigger: 2 сек
- с instead of trigger: 27 сек (процессор всё время занят на 100%)

А на оракле как дела обстоят?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36944423
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Без динамики в триггере удалось добиться прогресса.
Без динамики
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
create or replace trigger part_v2_iu2
instead of insert on part_v2
referencing new as n
for each row
begin 
  case 
    when n.d between '2010-01-01' and '2010-01-31' then insert into part_01(id, v, d) values (n.id, n.v, n.d);
    when n.d between '2010-02-01' and '2010-02-28' then insert into part_02(id, v, d) values (n.id, n.v, n.d);
    when n.d between '2010-03-01' and '2010-03-31' then insert into part_03(id, v, d) values (n.id, n.v, n.d);
    when n.d between '2010-04-01' and '2010-04-30' then insert into part_04(id, v, d) values (n.id, n.v, n.d);
    when n.d between '2010-05-01' and '2010-05-31' then insert into part_05(id, v, d) values (n.id, n.v, n.d);
    when n.d between '2010-06-01' and '2010-06-30' then insert into part_06(id, v, d) values (n.id, n.v, n.d);
    when n.d between '2010-07-01' and '2010-07-31' then insert into part_07(id, v, d) values (n.id, n.v, n.d);
    when n.d between '2010-08-01' and '2010-08-31' then insert into part_08(id, v, d) values (n.id, n.v, n.d);
    when n.d between '2010-09-01' and '2010-09-30' then insert into part_09(id, v, d) values (n.id, n.v, n.d);
    when n.d between '2010-10-01' and '2010-10-31' then insert into part_10(id, v, d) values (n.id, n.v, n.d);
    when n.d between '2010-11-01' and '2010-11-30' then insert into part_11(id, v, d) values (n.id, n.v, n.d);
    when n.d between '2010-12-01' and '2010-12-31' then insert into part_12(id, v, d) values (n.id, n.v, n.d);
    else signal sqlstate '75001' set message_text = 'Date is out of range';
  end case;
end@

values current timestamp

 1                          
--------------------------
 2010 - 11 - 09 - 11 . 52 . 40 . 859000 

   1  record(s) selected.


insert into part_v2 select * from session.data
DB20000I  The SQL command completed successfully.

values current timestamp

 1                          
--------------------------
 2010 - 11 - 09 - 11 . 52 . 55 . 578000 

   1  record(s) selected.

select year(d) y, month(d) m, count( 1 ) c
from part_v2
group by rollup((year(d), month(d)))
order by y, m@

Y           M           C          
----------- ----------- -----------
        2010             1          8395 
        2010             2          7517 
        2010             3          8421 
        2010             4          8334 
        2010             5          8646 
        2010             6          8220 
        2010             7          8642 
        2010             8          8571 
        2010             9          8294 
        2010            10          8477 
        2010            11          8150 
        2010            12          8333 
          -           -       100000 
но всё равно: 15 сек против 2-х...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36944460
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!
исходые данные
+

create table part_01 (id int not null, v varchar(10), d date not null) ;
create table part_02 (id int not null, v varchar(10), d date not null) ;
create table part_03 (id int not null, v varchar(10), d date not null) ;
create table part_04 (id int not null, v varchar(10), d date not null) ;
create table part_05 (id int not null, v varchar(10), d date not null) ;
create table part_06 (id int not null, v varchar(10), d date not null) ;
create table part_07 (id int not null, v varchar(10), d date not null) ;
create table part_08 (id int not null, v varchar(10), d date not null) ;
create table part_09 (id int not null, v varchar(10), d date not null) ;
create table part_10 (id int not null, v varchar(10), d date not null) ;
create table part_11 (id int not null, v varchar(10), d date not null) ;
create table part_12 (id int not null, v varchar(10), d date not null) ;

create view part_v as
select id, v, d from part_01
union all
select id, v, d from part_02
union all
select id, v, d from part_03
union all
select id, v, d from part_04
union all
select id, v, d from part_05
union all
select id, v, d from part_06
union all
select id, v, d from part_07
union all
select id, v, d from part_08
union all
select id, v, d from part_09
union all
select id, v, d from part_10
union all
select id, v, d from part_11
union all
select id, v, d from part_12;


попзжей включу PARTITION_VIEW_ENABLED, проверить планВы забыли в коде либо check constraint в каждой таблице, либо в каждом select во view указать where, либо всё это сразу (я не знаю, как там ораклу надо).
А то боюсь, что без этого оракл partition elimination не будет делать - ему неоткуда такую информацию взять будет...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36944479
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WarstoneИ оптимизация планов выполнения запросов, проводимая каждый раз при вставки одной записи, на себя ничего, конечно, не отъедает?
нет конечно, оракл не способен отличить откуда пришел SQL, из хранимки, с клиента или динамический из хранимки. я импользовал биндинг переменных, поэтому максимум 12 запросов распарсится, после чего эти 12 планов закрепяться в кеше.

Mark BarinsteinВ итоге для db2 имеем для вставки insert select из временной таблицы для 100 000 записей (ноут, 1 ядро t1300 1.66 GHz, винт 5400 rpm):
- без instead of trigger: 2 сек
- с instead of trigger: 27 сек (процессор всё время занят на 100%)

А на оракле как дела обстоят?
мне сравнить не с чем. но даже если в оракле та же картина не вижу преимущества, все время появляется из-за того, что запускается интерпритатор языка сторед процедур, а в реальной жизни по любому там будет туча логики и эти 3 строчки тригера на фоне остальной логики никакой погоды уже не сделают.
вы там рассказывали, что легко сделаете логгинг для эмуляции фрешбэк, ну давайте хотя бы такую "логику" добавим и сравним на сколько инстеад усугубил в этом случае.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36944524
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein
Вы забыли в коде либо check constraint в каждой таблице, либо в каждом select во view указать where, либо всё это сразу (я не знаю, как там ораклу надо).
А то боюсь, что без этого оракл partition elimination не будет делать - ему неоткуда такую информацию взять будет...
да, констреинты нужны, я еще думал параметер включать нужно, а он по дефолту включен. все работает (FILTER = partition elimination)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
SQL> select * from part_v where d = '01-JAN-2010' ;

        ID V          D
---------- ---------- ------------------
          1  shit        01 -JAN- 10 


Execution Plan
----------------------------------------------------------
Plan hash value:  1777321016 

----------------------------------------------------------------------------------------------
| Id  | Operation                      | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------
|    0  | SELECT STATEMENT               |             |      1  |     16  |      2    ( 0 )|  00 : 00 : 01  |
|    1  |  VIEW                          | PART_V      |      1  |     16  |      2    ( 0 )|  00 : 00 : 01  |
|    2  |   UNION-ALL PARTITION          |             |       |       |            |          |
|    3  |    TABLE ACCESS BY INDEX ROWID | PART_01     |      1  |     16  |      2    ( 0 )|  00 : 00 : 01  |
|*   4  |     INDEX RANGE SCAN           | PART_IDX_01 |      1  |       |      1    ( 0 )|  00 : 00 : 01  |
|*   5  |    FILTER                      |             |       |       |            |          |
|    6  |     TABLE ACCESS BY INDEX ROWID| PART_02     |      1  |     16  |      2    ( 0 )|  00 : 00 : 01  |
|*   7  |      INDEX RANGE SCAN          | PART_IDX_02 |      1  |       |      1    ( 0 )|  00 : 00 : 01  |
|*   8  |    FILTER                      |             |       |       |            |          |
|    9  |     TABLE ACCESS BY INDEX ROWID| PART_03     |      1  |     29  |      1    ( 0 )|  00 : 00 : 01  |
|*  10  |      INDEX RANGE SCAN          | PART_IDX_03 |      1  |       |      1    ( 0 )|  00 : 00 : 01  |
|*  11  |    FILTER                      |             |       |       |            |          |
|   12  |     TABLE ACCESS BY INDEX ROWID| PART_04     |      1  |     16  |      2    ( 0 )|  00 : 00 : 01  |
|*  13  |      INDEX RANGE SCAN          | PART_IDX_04 |      1  |       |      1    ( 0 )|  00 : 00 : 01  |
|*  14  |    FILTER                      |             |       |       |            |          |
|   15  |     TABLE ACCESS BY INDEX ROWID| PART_05     |      1  |     29  |      1    ( 0 )|  00 : 00 : 01  |
|*  16  |      INDEX RANGE SCAN          | PART_IDX_05 |      1  |       |      1    ( 0 )|  00 : 00 : 01  |
|*  17  |    FILTER                      |             |       |       |            |          |
|   18  |     TABLE ACCESS BY INDEX ROWID| PART_06     |      1  |     29  |      1    ( 0 )|  00 : 00 : 01  |
|*  19  |      INDEX RANGE SCAN          | PART_IDX_06 |      1  |       |      1    ( 0 )|  00 : 00 : 01  |
|*  20  |    FILTER                      |             |       |       |            |          |
|   21  |     TABLE ACCESS BY INDEX ROWID| PART_07     |      1  |     29  |      1    ( 0 )|  00 : 00 : 01  |
|*  22  |      INDEX RANGE SCAN          | PART_IDX_07 |      1  |       |      1    ( 0 )|  00 : 00 : 01  |
|*  23  |    FILTER                      |             |       |       |            |          |
|   24  |     TABLE ACCESS BY INDEX ROWID| PART_08     |      1  |     29  |      1    ( 0 )|  00 : 00 : 01  |
|*  25  |      INDEX RANGE SCAN          | PART_IDX_08 |      1  |       |      1    ( 0 )|  00 : 00 : 01  |
|*  26  |    FILTER                      |             |       |       |            |          |
|   27  |     TABLE ACCESS BY INDEX ROWID| PART_09     |      1  |     29  |      1    ( 0 )|  00 : 00 : 01  |
|*  28  |      INDEX RANGE SCAN          | PART_IDX_09 |      1  |       |      1    ( 0 )|  00 : 00 : 01  |
|*  29  |    FILTER                      |             |       |       |            |          |
|   30  |     TABLE ACCESS BY INDEX ROWID| PART_10     |      1  |     29  |      1    ( 0 )|  00 : 00 : 01  |
|*  31  |      INDEX RANGE SCAN          | PART_IDX_10 |      1  |       |      1    ( 0 )|  00 : 00 : 01  |
|*  32  |    FILTER                      |             |       |       |            |          |
|   33  |     TABLE ACCESS BY INDEX ROWID| PART_11     |      1  |     29  |      1    ( 0 )|  00 : 00 : 01  |
|*  34  |      INDEX RANGE SCAN          | PART_IDX_11 |      1  |       |      1    ( 0 )|  00 : 00 : 01  |
|*  35  |    FILTER                      |             |       |       |            |          |
|   36  |     TABLE ACCESS BY INDEX ROWID| PART_12     |      1  |     16  |      2    ( 0 )|  00 : 00 : 01  |
|*  37  |      INDEX RANGE SCAN          | PART_IDX_12 |      1  |       |      1    ( 0 )|  00 : 00 : 01  |
----------------------------------------------------------------------------------------------

...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36944525
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!мне сравнить не с чем. но даже если в оракле та же картина не вижу преимущества, все время появляется из-за того, что запускается интерпритатор языка сторед процедур, а в реальной жизни по любому там будет туча логики и эти 3 строчки тригера на фоне остальной логики никакой погоды уже не сделают.
А вы сравните со вставкой в непартиционированную таблицу:
Вставка в непартиционированную
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
create table part_all (id int not null, v varchar( 10 ), d date not null) in userspace1@

values current timestamp@
insert into part_all select * from session.data@
values current timestamp@

values current timestamp

 1                          
--------------------------
 2010 - 11 - 09 - 12 . 19 . 33 . 984000 

   1  record(s) selected.


insert into part_all select * from session.data
DB20000I  The SQL command completed successfully.

values current timestamp

 1                          
--------------------------
 2010 - 11 - 09 - 12 . 19 . 35 . 703000 

select year(d) y, month(d) m, count( 1 ) c
from part_all
group by rollup((year(d), month(d)))
order by y, m@

Y           M           C          
----------- ----------- -----------
        2010             1          8395 
        2010             2          7517 
        2010             3          8421 
        2010             4          8334 
        2010             5          8646 
        2010             6          8220 
        2010             7          8642 
        2010             8          8571 
        2010             9          8294 
        2010            10          8477 
        2010            11          8150 
        2010            12          8333 
          -           -       100000 
У меня - 1.7 сек.
Про тучи логики в реальной жизни не буду комментировать - жизнь у каждой стстемы своя...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36944579
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein
А вы сравните со вставкой в непартиционированную таблицу:

а какой смысл ? тогда уж более спортивно было бы сравнивать с партициированной по взрослому. но мне лень, коню ясно, что быстрей чем если бы вы для этого вью flashback пытались бы проэмулировать.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36944955
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Mark Barinstein
А вы сравните со вставкой в непартиционированную таблицу:

а какой смысл ? тогда уж более спортивно было бы сравнивать с партициированной по взрослому. но мне лень, коню ясно, что быстрей чем если бы вы для этого вью flashback пытались бы проэмулировать.Не мешайте вместе мух (флешбек) и котлеты (партиционирование), они не связаны друг с другом.
Давайте рассмотрим цель партиционирования: ускорить работу с большой таблицей путём разбиения её на части, чтобы в зависимости от предиката оно лезло только в часть таблицы, а не во всю.
И если из такой таблицы надо делать только чтения, то мы увидим выгоду от этого и в дб2, и в оракле.
Но в реальности такую таблицу надо и обновлять, а здесь у оракла могут быть серьёзные проблемы. И накладные расходы на обновление могут убить все выгоды партиционирования по сравнению с непартиционированной таблицой - вот почему я прошу сравнивать с непартиционированной таблицей.

Что до моего флешбека, то я не использую там вью, я просто веду историческую таблицу тремя триггерами. Флешбековые запросы я делаю из этой исторической таблицы, а не из основной.
Массовые обновления у меня (ну, может, кроме insert) - это действительно тяжёлая операция, которой лучше избегать (update текущей записи и, если это update, то insert новой).
Но на паре сотен затронутых записей не так долго и работает, хотя разницу видно хорошо.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36945031
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Mark Barinstein


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

Простите, я не совсем понял. В дб2 нет возможности:

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE PARTITION FUNCTION...
GO

CREATE PARTITION SCHEME...
GO

CREATE TABLE \ INDEX  ... ON partition_scheme_name ( partition_column_name ) ...

?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36945090
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2pkarklin

речь про партитионинг для бедных, которые не тянут EE edition. кстати, а что мсскл может предложить для стандарт едишено на тему партитионинга ?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36945117
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!кстати, а что мсскл может предложить для стандарт едишено на тему партитионинга ?

Тока Partitioned Views. Есть во всех редакциях.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36945132
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein И накладные расходы на обновление могут убить все выгоды партиционирования по сравнению с непартиционированной таблицой - вот почему я прошу сравнивать с непартиционированной таблицей.

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

Mark BarinsteinЧто до моего флешбека, то я не использую там вью, я просто веду историческую таблицу тремя триггерами.
вот и давайте посмотрим как эти 3 тригера повлияют на разницу. добавте в партицированную и во вью эти тригера и будет ли заметна разница теперь. я думаю не особо.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36945371
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Mark Barinstein И накладные расходы на обновление могут убить все выгоды партиционирования по сравнению с непартиционированной таблицой - вот почему я прошу сравнивать с непартиционированной таблицей.
ну это у вас воображение разыгралось, столь примитивный тригер как-то повлиять на "выгоды" не сможет.
еще раз, мой поинт в том, что в реальной задаче по любому будет тригер обрабатывать входные данные + хотя бы базовые аудитные записи оставить. 4 "лишних" строчки в этом тригере добавят не более 10%. Да не сравниваем мы здесь флешбек, выключите его у себя! :)
Ну вот, а теперь вспомните свои незачёты за какие-то копеечные накладные расходы на fenced java функции, лишние io на функциональные индексы.
Вот если где и ставить незачёт, так вот за эти "4 лишних строчки", которые у меня ухудшили производительность запроса в 7 и 13 раз.
дб2-шной fenced java и функциональным индексам никогда не удастся так запрос ухудшить. :)
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36947838
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinДа не сравниваем мы здесь флешбек, выключите его у себя! :)Никак нельзя нащальника! Это святой кароф любый оракдиста

ЗЫ. Толку-то от этого флэшбэка...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36948645
RENaissance
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_L
ЗЫ. Толку-то от этого флэшбэка...
Реально увеличивает размер члена в споре "Кто круче".
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36948798
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Флэшбек это оффтоп. Его нет ни в Oracle XE, ни даже в Std. Это EE.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36955157
Sgt.Pepper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а текстовая переменная так и не может быть '', только null?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36955574
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sgt.Pepperа текстовая переменная так и не может быть '', только null?
и это правильно, три раза уже тут пережевывали.

SiemarglФлэшбек это оффтоп. Его нет ни в Oracle XE, ни даже в Std. Это EE.
фрешбэк квери есть в любой редакции
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36956326
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Sgt.Pepperа текстовая переменная так и не может быть '', только null?
и это правильно, три раза уже тут пережевывали.Ради интереса.
Я пропустил первые три серии (лень искать, простите) и у меня практический вопрос, типа "что делают оракловые разработчики, если...".
Дано: есть таблица со строковым полем, на него есть индекс, в поле могут быть пустые значения (или "значение отсутствует" - не важно, как назвать).
Я пишу запрос типа "выбрать всё из таблицы, где значение поля равно параметру".
В db2 я объявляю это поле not null и полагаю, что "отсутствие значения" это пустая строка.
db2create table tab (col varchar(10) not null, ...)Мой запрос с параметром par будет выглядеть так:
db2select * from tab where col=par
Мои варианты решения задачи на оракле:
1.
В оракле я не могу хранить пустое значение в not null поле.
Если я сделаю поле с возможностью хранения null, то мой запрос будет выглядеть так:
oracleselect * from tab where col=par or (col is null and par is null)Как оптимизатор отнесётся к такому запросу?
Индекс будет использоваться (а если будет, то не full index scan ли получится)?
2.
Объявить поле not null и завести своё "отсутствие значения" в виде, скажем, '*'.
Тогда мой запрос не будет отличаться от дб2-шного.

Вопрос: как всё-таки решают в оракле такую задачу?
Может, есть ещё варианты?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36956600
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinВ оракле я не могу хранить пустое значение в not null поле.
Если я сделаю поле с возможностью хранения null, то мой запрос будет выглядеть так:
Код: plaintext
select * from tab where col=par or (col is null and par is null)
неужели в оракле нет аналога тому же mysql-евому <=> ?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36956764
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein
Вопрос: как всё-таки решают в оракле такую задачу?
Может, есть ещё варианты?

where NVL(col,'*null*') =:par
и соответственно индекс по NVL(col,'*null*')
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36957945
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!SiemarglФлэшбек это оффтоп. Его нет ни в Oracle XE, ни даже в Std. Это EE.
фрешбэк квери есть в любой редакции
> alter database flashback on;
Нету, а без него далеко не вернешься.

ЗЫ. Про пустые строки тут срач уже был. Может хватит.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36958275
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SiemarglYo.!
фрешбэк квери есть в любой редакции
> alter database flashback on;
Нету, а без него далеко не вернешься.

вернешся, флашбэк квери совершенно другая фича.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-00439: feature not enabled: Flashback Database

SQL> delete from emp where rownum=1 ;

1 row deleted.

SQL> commit ;

Commit complete.

SQL> select count(*) from emp   ;

  COUNT(*)
----------
    999998

SQL> select count(*) from emp  AS OF TIMESTAMP  (SYSDATE-1/24) ;

  COUNT(*)
----------
    999999

...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36958743
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinЯ пропустил первые три серии (лень искать, простите)
Не только Вы. Забавно наблюдать, как даже Метелица, которого я уже скоро десять лет как помню как вдумчивого и грамотного db2-щика, отмечается забавными мыслями "про оракл".

Mark Barinsteinи у меня практический вопрос, типа "что делают оракловые разработчики, если...".
Чаще всего (следует читать как "я сходу даже не припомню, случается ли вообще другое") им ничего делать не требуется. Причин этому несколько. Во-первых, поиск "по пустой строке" - крайне редкая операция, вот честно, ни разу в жизни не сталкивался с отчётом вроде "люди с пустыми отчествами". Поиск по null в числовом поле, хоть и редок, но на порядки чаще. Во-вторых, null - практически всегда низкоселективное значение, и попытка искать его по индексу проигрывает если не фулскану, то сканированию по лучшему индексу.

Если рассматривать сферическую задачу в вакууме, то неграмотный новичок, возможно, и попытается придумать "собственное пустое значение", как Вы предлагаете, но самый простой путь - использовать составной индекс.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36958855
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer...Во-первых, поиск "по пустой строке" - крайне редкая операция, вот честно, ни разу в жизни не сталкивался с отчётом вроде "люди с пустыми отчествами".
Если рассматривать сферическую задачу в вакууме, то неграмотный новичок, возможно, и попытается придумать "собственное пустое значение", как Вы предлагаете, но самый простой путь - использовать составной индекс.Ну, задача найти людей с незаполненными паспортными данными, номерами телефона всё же встречается не так редко.
Причём дело здесь не в индексе даже - по всей таблице только по этому пустому полю редко кто ищет.
Вот сферическая задача: поиск по группе записей типа
Код: plaintext
select * from customer where gid=:par_gid and passport_ no=:par_passport_no
т.е. я имею индекс по этому(им) полю <gid> и ищу всех в этой группе по номеру паспорта.
Этот же самый запрос я использую для поиска тех, у кого нет паспортных данных.
Если я правильно понял про самый простой способ (простите уж неграмотного новичка :)), это использовать для каждого такого поля дополнительное поле-флаг пустого значения?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959001
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinНу, задача найти людей с незаполненными паспортными данными, номерами телефона всё же встречается не так редко
Ну, поскольку ни та, ни другая не являются задачей поиска в таблице пустой строки, о её частоте вряд ли стоит говорить :)

Mark BarinsteinПричём дело здесь не в индексе даже - по всей таблице только по этому пустому полю редко кто ищет.
Именно что. Поэтому вопрос про индекс и отношение оптимизатора в общем малоактуален.

Mark BarinsteinЭтот же самый запрос я использую для поиска тех, у кого нет паспортных данных.
Вот в этом месте сферическая задача становится.. антиреальной. Смотрите сами: Вы написали запрос, который ищет в группе человека с некоторым номером паспорта. Допустим, он действительно такой нужен. И теперь хотите этим же запросом найти "людей без паспортов". Согласитесь, это совершенно разные задачи, которые скорее всего будут решаться даже в разных формах. Соответственно, "этим же" становится неконструктивным, риторическим условием "для достижения нужного результата" - как, знаете, в конкурсах пишут такие условия, которым заведомо соответствует заранее назначенный победитель и только он.

Ну а на практике самый простой способ - использовать запрос where gid = :gid and passport_no is null. И этот запрос будет использовать индекс по (gid, passport_no), в том числе для поиска null-ов. Если очень хочется извращаться, конечно, можно писать что-нибудь типа where gid = :gid and coalesce (passport_no, '*') = coalesce (:passport_no, '*'), но это уже больше к проктологам и вынужденным общаться с их продуктами.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959113
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerВот в этом месте сферическая задача становится.. антиреальной. Смотрите сами: Вы написали запрос, который ищет в группе человека с некоторым номером паспорта. Допустим, он действительно такой нужен. И теперь хотите этим же запросом найти "людей без паспортов". Согласитесь, это совершенно разные задачи, которые скорее всего будут решаться даже в разных формах.Ну, это от системы зависит.
Одной формой с вариантом использования:
1. получить список по заданным фильтрам
2. отредактировать / удалить / просмотреть нужный объект или создать новый
я решаю все задачи по ведению таких объектов.
softwarerНу а на практике самый простой способ - использовать запрос where gid = :gid and passport_no is null. И этот запрос будет использовать индекс по (gid, passport_no), в том числе для поиска null-ов. Если очень хочется извращаться, конечно, можно писать что-нибудь типа where gid = :gid and coalesce (passport_no, '*') = coalesce (:passport_no, '*'), но это уже больше к проктологам и вынужденным общаться с их продуктами.Здесь ведь вопрос удобства программирования.
У меня в db2 для строк всегда 1 вариант предиката: ... and passport_no = :passport_no

В оракле же, насколько я понял, надо либо:
* динамику использовать - в зависимости от значения параметра, вбитого в форму, писАть:
... and passport_no = :passport_no
либо:
... and passport_no is null
* зашивать дефолтовое значение в программу (и не ошибиться с выбором дефолтового значения, чтоб потом программу не переписывать) и:
... and coalesce (passport_no, '*') = coalesce (:passport_no, '*')

Я не буду больше спорить, чтобы не затевать четвёртую серию сериала. :)
Если для ораклистов это удобно, или, действительно, встречается редко - тоже можно понять.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959261
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinЗдесь ведь вопрос удобства программирования. У меня в db2 для строк всегда 1 вариант предиката: ... and passport_no = :passport_no
И как Вы поступаете, когда в этом запросе вообще не нужен фильтр по паспорту? Передаёте null и позволяете ему вернуть пустую выборку? ;-)

Марк, Вы произнесли именно те ключевые слова - "фильтр" и "динамически" - которые я надеялся услышать, говоря "согласитесь". Чтобы потом отметить одну тонкость. Действительно, запрос вполне может быть один тогда (и в общем-то только тогда), когда к нему применяется некий глобальный фильтр. Но если этот фильтр динамический (что примерно в 100% случаев - единственно профессиональный метод, во всяком случае для Oracle) - разницы нет, один раз научить компонент вовремя подставлять is null не стоит и минуты обсуждения. Если же фильтр таки статический, то рассмотрев типичный QBE-интерфейс (а другой для статики не годится), мы увидим нечто вроде

Код: plaintext
1.
Дата выдачи с:  [__.__.____]
Дата выдачи по: [__.__.____]

и соответственно sql:

Код: plaintext
1.
2.
where 
  issue_date >= coalesce (:issue_date_from, issue_date) and
  issue_date <= coalesce (:issue_date_to, issue_date) 

И теперь, если мы попробуем добавить в фильтр строковое поле (два варианта - не нужен поиск по пустым значениям, нужен поиск по пустым значениям), как-то так окажется, что в оракловом случае sql и передача параметров кодируются не сложнее, а то и проще.

Mark BarinsteinЕсли для ораклистов это удобно, или, действительно, встречается редко - тоже можно понять.
В таком варианте это действительно встречается редко. А с отмиранием Oracle Forms с его жёсткой статикой, полагаю, окончательно потеряет актуальность.

А без протокола.. я работал так и я работал эдак, и с Oracle, и с MSSQL. И положа руку на сердце, в случае неоракловых строк геморроя больше, особенно в варианте "в таблице три поля, одно допускает null и не допускает пустые строки, другое допускает пустые строки, но не null, третье допускает и то, и другое, а в форме надо ввести значения для этих трёх полей".
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959332
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerMark BarinsteinЯ пропустил первые три серии (лень искать, простите)
Не только Вы. Забавно наблюдать, как даже Метелица ... отмечается забавными мыслями "про оракл".

Например?

Я, на самом деле, не считаю себя большим спецом по DB2, хоть работаю с ней больше 10 лет, иногда перечитываю документацию и т.п. Пробелов много; правда, многие вещи на моём месте просто не нужны. (Вот Марк - другое дело, он действительно DB2-спец). Но приходится работать с Oracle, это оказывается намного сложнее, чем DB2, и это меня бесит. Приходится вникать в такие вещи, которые я вообще даже не хотел бы знать и без которых при работе с DB2 обходился и обхожусь. Понятно, для ораклиста они нормальны, а мне как-то не забавно совсем. Ну ладно, я уже смирился. Придётся становиться хотя бы OCP DBA... в следующем году.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959344
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerMark BarinsteinЗдесь ведь вопрос удобства программирования. У меня в db2 для строк всегда 1 вариант предиката: ... and passport_no = :passport_no
И как Вы поступаете, когда в этом запросе вообще не нужен фильтр по паспорту? Передаёте null и позволяете ему вернуть пустую выборку? ;-)
Код: plaintext
... and (passport_no = :passport_no or :passport_no_Not_used_flag =  1 )
Удобно использовать, есс-но, когда не нужен индекс по искомому атрибуту (есть индекс по gid, например).
Преимущества: в кэше запросов такой запрос всегда один, для последующих таких же запросов не тратится время на парсинг, компиляцию - план доступа и так всегда один.
Сравните с кол-вом различных комбинаций для разных значений параметров при сколько нибудь значительном кол-ве разных атрибутов.
Когда таких запросиков очень много, эти накладные расходы могут становиться заметными.

Моя цель - не затеять флейм, а узнать мнение людей, которые практикой занимаются.
Вашу точку зрения я понял, спасибо.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959378
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinstein
В оракле же, насколько я понял, надо либо:
* динамику использовать - в зависимости от значения параметра, вбитого в форму, писАть:
... and passport_no = :passport_no
либо:
... and passport_no is null
* зашивать дефолтовое значение в программу (и не ошибиться с выбором дефолтового значения, чтоб потом программу не переписывать) и:
... and coalesce (passport_no, '*') = coalesce (:passport_no, '*')

Форма, вызывается не очень часто (в масштабах запросов в секунду), количество условий заранее неизвестно. Тут я проголосовал бы за динамику, вплоть до подстановки литералов вместо использования переменных. Меня в Oracle то, что пустая строка - это NULL, уже не особо беспокоит. А вот то, что NULL-ы не индексируются, это настоящая проблема.

passport_no = :passport_no может использовать индекс
passport_no is null не сможет

Функциональные индексы грязно выглядят для решения такой ситуации. Но тут остаётся только развести руками.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959411
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Марк, вряд ли кто-либо будет спорить с преимуществом кэша запросов, равно как и с тем, что при всём богатстве выбора большинство фильтров таки идёт по типовым сценариям. То есть, имхо, накладные расходы на построение, скажем, 500 хороших планов (из которых штук 20-40 надёжно закрепятся в кэше) имхо просто несравнимы с затратами на выполнение 50'000 запросов по одному и тому же универсально-плохому плану.

Возможно, я ошибаюсь, но мне смутно помнится, что "когда-то давно" у DB2 фактически отсутствовал кэш запросов, а планы просто жёстко прописывались при компиляции ХП либо всегда строились на ходу. Во всяком случае, именно на это я привык списывать повышенное (с моей точки зрения) внимание db2-шников к "статика vs динамика". Или это вызвано другими причинами?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959417
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsapassport_no is null не сможет
Ну, если это действительно нужно, никто не мешает создать user-defined индекс, к нему оператор ISNULL() и навсегда решить эту проблему. Но скорее любопытно, какие задачи приходится решать так, что при этом это действительно беспокоит?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959444
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я привык мерять своей меркой. А у меня к базулькам не бывает больше 200 коннектов. Формами с фильтрами пользуются далеко не все, и не чаще, чем раз в несколько минут (на самом деле, много реже). Данные могут быть десятки миллионов строк. Так что мы могли бы себе позволить даже и литералы. А кеш запросов давно есть. Кажется, это появилось при мне, до 2000-го года, где-то около 5-й версии LUW (тогда это по другому называлось, и сразу после 2-й шла 5-я). (Понятно, что сделать prepare и помнить хендл до дисконнекта можно было и до этого).
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959551
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Ну, если это действительно нужно, никто не мешает создать user-defined индекс, к нему оператор ISNULL() и навсегда решить эту проблему. Но скорее любопытно, какие задачи приходится решать так, что при этом это действительно беспокоит?

Ораклиные базы у нас чужой разработки, с сотнями и тысячами таблиц. Теоретически, вещи типа создания индексов я делать не могу. С другой стороны, это наши данные, и я могу делать любые запросы, какие нужно, никого не спрашивая. Какие именно запросы - заранее предположить не могу. Разработчики далеко, а ещё с ними (некоторыми) очень-очень непросто иметь дело.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959567
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerВозможно, я ошибаюсь, но мне смутно помнится, что "когда-то давно" у DB2 фактически отсутствовал кэш запросов, а планы просто жёстко прописывались при компиляции ХП либо всегда строились на ходу. Во всяком случае, именно на это я привык списывать повышенное (с моей точки зрения) внимание db2-шников к "статика vs динамика". Или это вызвано другими причинами?В v2.1 не было global dynamic statement cache, оно в v5 появилось.
Но это не важно.
И сейчас в db2 любят демонстрировать на туче мелких запросов преимущества static над dynamic sql - разница может достигать десятков процентов в производительности.
Даже есть прикольный тул для static profiling : оно нападает на программу, использующую динамику, ловит динамические вызовы и преобразует их в статические, а потом эта же неизменённая программа начинает пользоваться статикой.
И я не думаю, что всё это из-за того, что db2 не умеет нормально с кэшем динамических запросов работать.
Но, конечно, чтобы эту разницу увидеть, надо нагрузку соответствующего характера иметь.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959583
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача "я ничего не могу, но хочу всё-не-знаю-что" точно нерешаема, вне зависимости от null. Найдутся и другие фичи, которые Oracle возмутительно не поддерживает, хотя бы эффективный регистронезависимый поиск.

Я не был в такой ситуации и определённо не хочу в ней бывать, но с практической точки зрения - если Вы создадите индексы в своей схеме и будете использовать их в своих запросах, имхо разработчики очень мало что смогут сказать Вам. Собственно, если мне не изменяет память, при соответствующе выстроенных правах они даже не получат шанса эти индексы обнаружить (если те не будут падать, конечно).
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959622
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос может пойти по неправильному плану, начать тормозить, начнут пинать разработчиков, они увидят в плане этот индекс и спросят, откуда он взялся. Но дело пойти и хуже - ведь они найдут козла отпущения для своих собственных проблем.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959632
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor MetelitsaЗапрос может пойти по неправильному плану, начать тормозить, начнут пинать разработчиков, они увидят в плане этот индекс и спросят, откуда он взялся. Но дело пойти и хуже - ведь они найдут козла отпущения для своих собственных проблем.
"Запрос" - в данном контексте это какой-нибудь из запросов разработчиков.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959688
const64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощенья, что встреваю - но (если я правильно понял из предыдущих сообщений) почему, если DB2 не умеет создавать индексы по функциям - то это для DB2 очень плохо, а если Oracle не может создавать индексы по null полям - то это никому и не надо?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959727
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinНо, конечно, чтобы эту разницу увидеть, надо нагрузку соответствующего характера иметь.
Безусловно, такую разницу нетрудно продемонстрировать на примере, но интересен вопрос степени актуальности в типичных задачах.

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

Насколько и где эта картина отличается от DB2-шной?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959745
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor MetelitsaЗапрос может пойти по неправильному плану, начать тормозить,
Не может. Он не пойдёт работать по плану с Вашим индексом до тех пор, пока в тексте запроса не будет использован Ваш оператор ISNULL.

Victor Metelitsaведь они найдут козла отпущения для своих собственных проблем.
Не найдут. Это лучше спросить у Oracle DBA - я всё же несколько в стороне от подобных тем - но насколько я могу сходу оценить, если не давать разработчикам ненужных прав на вашем сервере, они этот индекс нигде никогда не увидят.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959762
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
const64Прошу прощенья, что встреваю - но (если я правильно понял из предыдущих сообщений) почему, если DB2 не умеет создавать индексы по функциям - то это для DB2 очень плохо, а если Oracle не может создавать индексы по null полям - то это никому и не надо?да какая разница
делайте выводы сами
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959784
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
const64Прошу прощенья, что встреваю - но почему
Не надо - потому что даже Виктор, которого это вроде как бесит, на вопрос "а для чего нужно-то" отвечает "ну я не знаю, какие будут запросы, может и понадобится". А чем плохо - (пожимая плечами) - да не знаю. При наличии вычислимых полей - можно жить. Разве что я посмотрел бы, не идёт ли в результате ненужного дублирования данных. Но с другой стороны, эти поля можно, наверное, выводить в select без перевычислений.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959827
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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, по которому он в рантайме находится в системном каталоге или кэше статических запросов.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959908
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein
В статике у db2 в рантайме нет:
- sort parse
- hard parse
- проверки авторизаций пользователя на все объекты (не забываем, что оракл тоже должен это делать), используемые в запросе. Проверяется только право execute на пакет, в котором хранятся все статические запросы программы.

уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные. а тут какой план зашился с тем и жить.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959917
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerconst64Прошу прощенья, что встреваю - но почему
Не надо - потому что даже Виктор, которого это вроде как бесит, на вопрос "а для чего нужно-то" отвечает "ну я не знаю, какие будут запросы, может и понадобится".

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

"user-defined индекс, к нему оператор ISNULL()" - это, вообще, в какой версии? Я не помню таких штук.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959948
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor Metelitsa
"user-defined индекс, к нему оператор ISNULL()" - это, вообще, в какой версии? Я не помню таких штук.
в восьмерке было, древней оракла я не застал ...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36959981
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные. а тут какой план зашился с тем и жить.Если с изменением данных план не должен меняться, то оно, может, и хорошо, что план зашился.
Но если хочется, то можено и rebind пакетам делать после обновления статистики.
Никто не говорит, что static всегда лучше.
Просто в db2 есть дополнительная возможность, которую можно использовать, можно нет.

Про cost based оптимизатор - не понял, это к чему?
В db2 он таким и был с древности.
Или в оракле он более костистее? :)
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960005
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
const64Прошу прощенья, что встреваю - но (если я правильно понял из предыдущих сообщений) почему, если DB2 не умеет создавать индексы по функциям - то это для DB2 очень плохо, а если Oracle не может создавать индексы по null полям - то это никому и не надо?Опупенная логика. А знак вопрос - это по ошибке, да?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960015
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein
Про cost based оптимизатор - не понял, это к чему?
В db2 он таким и был с древности.
Или в оракле он более костистее? :)
если план не меняется в зависимости от собраной статистики имхо это скорее rule-based, но это мое имхо.
кстати, то что в дб2 оптимизатор кост с древности распростроненное заблуждение. реально у оракла он появился раньше (есть пруф), а произошло это только в семерке, т.е. не так уж и давно.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960026
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!Victor Metelitsa
"user-defined индекс, к нему оператор ISNULL()" - это, вообще, в какой версии? Я не помню таких штук.
в восьмерке было, древней оракла я не застал ...
А можно примерчик? Может, я это под другим названием знаю.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960041
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!Mark Barinstein
Про cost based оптимизатор - не понял, это к чему?
В db2 он таким и был с древности.
Или в оракле он более костистее? :)
если план не меняется в зависимости от собраной статистики имхо это скорее rule-based, но это мое имхо.
кстати, то что в дб2 оптимизатор кост с древности распростроненное заблуждение. реально у оракла он появился раньше (есть пруф), а произошло это только в семерке, т.е. не так уж и давно.
В DB2 2.1 for OS/2 cost-based оптимизатор был, rule-based оптимизатора не было, хинтов не было. Oracle 7 примерно этих же лет, что из них раньше - не помню, но народ изо всех сил старался держаться от их "cost-based" оптимизатора подальше.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960050
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потом появился Oracle 8 и радостные статьи - ура, теперь cost-based-оптимизатором можно пользоваться. Недолго радовались, как я понимаю.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960065
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!кстати, то что в дб2 оптимизатор кост с древности распростроненное заблуждение. реально у оракла он появился раньше (есть пруф), а произошло это только в семерке, т.е. не так уж и давно.В моём пруфе оно появилось в 1983 (это если дедушку System R не считать):
The Big Picture: IBM DB2 Information Management Software and DB2 Universal Database .
Было бы интересно посмотреть на опровержение этого заблуждения.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960086
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinsteinкроме session cached cursors (по крайней мере, я не знаю аналогов)
Это по сути подтяжки для разработчиков, слишком ленивых, чтобы прочитать про prepared statements.

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

Ну то есть, собственно, как я и предполагал, вопрос сводится к сопоставлению prepared statement и динамики с вероятным soft parse и редким hard parse. Конечно, когда можно сработать "без потерь", статика лучше. Но, полагаю, не будет неправильным сказать, что статика хороша тогда и только тогда, когда в ней зашита обязательная сильная фильтрация, а переменная часть непринципиальна. В типичном случае даже простого фильтра - десяток условий, ни одно из которых не является обязательным - статика будет несравнимо больше проигрывать на этапе выполнения (cобственно, Oracle даже в этом случае пытается подстраивать планы под разные значения переменных, хотя до идеала тут ещё очень и очень далеко).
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960106
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные. а тут какой план зашился с тем и жить.Видимо, пережевывали недостаточно. При работе со статикой есть простое правило - после сбора статистики надо пересоздать планы статики (rebind).
Достоинство в том, что эту операцию можно делать по необходимости, например в периоды низкой нагрузки. А если сбора статистики небыло, то и динамика со старой статистикой не будет новые планы генерячить, ибо не с чего.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960131
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerНо, полагаю, не будет неправильным сказать, что статика хороша тогда и только тогда, когда в ней зашита обязательная сильная фильтрация, а переменная часть непринципиальна. В типичном случае даже простого фильтра - десяток условий, ни одно из которых не является обязательным - статика будет несравнимо больше проигрывать на этапе выполнения (cобственно, Oracle даже в этом случае пытается подстраивать планы под разные значения переменных, хотя до идеала тут ещё очень и очень далеко).Ну, в том примере, который я приводил, плпн доступа всегда одинаков - доступ по индексу gid.
В общем, применение статике можно найти, и часто она действительно не подходит или не удобна в применении.
В db2 есть, типа, бест практисиз для этого:
Determining when to execute SQL statements statically or dynamically in embedded SQL applications
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960184
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinВ моём пруфе оно появилось в 1983 (это если дедушку System R не считать):
The Big Picture: IBM DB2 Information Management Software and DB2 Universal Database .
Было бы интересно посмотреть на опровержение этого заблуждения.
не вижу, можно точную цитатку какую именно фразу вы приняли за "появилось" ?

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

похоже загнулся журнальчик.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960202
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашел в архиве

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 где в это время и подохла ...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960232
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 с самого её начала .
Как ещё по-другому можно интерпретировать эти фразы?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960299
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960345
пгуые123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень интересно повспоминать, когда появился cost-based оптимизатор, но это жить воспоминаниями о прошлом. А как сейчас?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960379
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!Mark Barinstein
В статике у db2 в рантайме нет:
- sort parse
- hard parse
- проверки авторизаций пользователя на все объекты (не забываем, что оракл тоже должен это делать), используемые в запросе. Проверяется только право execute на пакет, в котором хранятся все статические запросы программы.

уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные . а тут какой план зашился с тем и жить.
В теории...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960411
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пгуые123Очень интересно повспоминать, когда появился cost-based оптимизатор, но это жить воспоминаниями о прошлом. А как сейчас?
Да, я тут некий примерчик просил, потому что перерываю ораклячью SQL reference и не понимаю, о чём шла речь.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960462
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinКак ещё по-другому можно интерпретировать эти фразы?
ну например так: нароботки использовались в проекте Starburst project, который в db2 пришли только в 1997

но я нашел описание состояния оптимизатора в 1993, да там уже cost-based

Query Optimization in the IBM DB2 Family
http://sites.computer.org/debull/93DEC-CD.pdf
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960483
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor MetelitsaДа, я тут некий примерчик просил, потому что перерываю ораклячью SQL reference и не понимаю, о чём шла речь.
да ты толком объясни чего хочешь то увидеть. это ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
SQL> create index tst5idx on tst5(val,1) ;

Index created.

SQL> select count(*) from tst5 where val is null ;

  COUNT(*)
----------
         3


Execution Plan
----------------------------------------------------------
Plan hash value: 1941112671

-----------------------------------------------------------------------------
| Id  | Operation         | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |         |     1 |    27 |     2   (0)| 00:00:01 |
|   1 |  SORT AGGREGATE   |         |     1 |    27 |            |          |
|*  2 |   INDEX RANGE SCAN| TST5IDX |     3 |    81 |     2   (0)| 00:00:01 |
-----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("VAL" IS NULL)
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960503
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это:

softwarerVictor Metelitsapassport_no is null не сможет
Ну, если это действительно нужно, никто не мешает создать user-defined индекс, к нему оператор ISNULL() и навсегда решить эту проблему. Но скорее любопытно, какие задачи приходится решать так, что при этом это действительно беспокоит?

т.е. существует какой-то user-defined index, не привычный и не функциональный.
и оператор ISNULL()
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960540
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Mark BarinsteinКак ещё по-другому можно интерпретировать эти фразы?
ну например так: нароботки использовались в проекте Starburst project, который в db2 пришли только в 1997

но я нашел описание состояния оптимизатора в 1993, да там уже cost-based

Query Optimization in the IBM DB2 Family
http://sites.computer.org/debull/93DEC-CD.pdf Просто сами подумайте:
- в 1973 стартует проект System R, где есть cost-based оптимизатор, проект признаётся успешным
- в 1981 на System R вырастает SQL/DS (я видел, её, мне даже из чёрно-зелёного окна разрешали запросы к ней слать :))
- в 1983 на System R вырастает DB2, где утверждается, что наработки в cost-based из System R использовались с самого начала
- но на самом деле это был обман, и 14 (!!!) лет (ну а чего, Илья Муромец 30 лет на печи сидел, и ничего, зато потом вон как развернулся) в db2 был rules-based оптимизатор.
Потом, когда оракл ввёл cost-based, в IBM почесали репу и решили, хватит сидеть на печи, пора.
И сказали (виновато так): вот-с, и мы так можем-с, не хуже оракла.

Вы нигде не найдёте утверждений, что он, rule-based, в db2 когда-то вообще был.
А про starburst - погуглите, если интересно, там много чего, но только не внедрение в db2 cost-based...
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960607
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsaт.е. существует какой-то user-defined index, не привычный и не функциональный.
и оператор ISNULL()
http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/ap_examples001.htm#SQLRF55547
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36960675
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Вот, нашлась ещё одна вещь, про которую я предпочёл бы не знать ;-) но, видно, придётся ;-)
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #36962414
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересная штука; наверное, даже буду пользоваться. Правда, в DB2 нечто подобное тоже есть, но она меня не заставляла этим интересоваться.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37196753
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вышла бетта Oracle Database 11.2 Express Edition
http://www.oracle.com/technetwork/database/express-edition/11gxe-beta-download-302519.html

лимит 11гб датафайлы, 1 cpu, 1 гб ram
прогресс на лицо
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37196910
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это бета, значит в нём подразумеваются баги. А в какую дырку у него совать багрепы?
Уж не в форум ли, где в первом же топике неоценимый совет "It is recommended to disable
anti-virus software before installing Oracle on Windows"?..
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37196929
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovЕсли это бета, значит в нём подразумеваются баги. А в какую дырку у него совать багрепы?
Уж не в форум ли, где в первом же топике неоценимый совет "It is recommended to disable
anti-virus software before installing Oracle on Windows"?..

а ты на полном серьезе не по понимаешь почему ?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37196956
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет, я всё понимаю... Оракулу же надо защищать свою интеллектуальную собственность...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37196971
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovДа нет, я всё понимаю... Оракулу же надо защищать свою интеллектуальную собственность...

в данном случае дело совершенно не в оракле
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37196995
goldenfoods
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!вышла бетта Oracle Database 11.2 Express Edition
http://www.oracle.com/technetwork/database/express-edition/11gxe-beta-download-302519.html

лимит 11гб датафайлы, 1 cpu, 1 гб ram
прогресс на лицо
Даже MS обогнали теперь.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37197850
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вчера покрутил, глючков не нашел, но похоже это еще глупокая бетта. в ЕМ не нашел администрилки, все управление базой предлагается через гуйню sql developer делать, ну или командами sqlplus. зато гляжу процессор это именно сокет.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37197977
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!зато гляжу процессор это именно сокет.Т.е. может использовать два и более ядер одного проца?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37198055
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftТ.е. может использовать два и более ядер одного проца?

да, во всяком случае у себя вижу такую картинку

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
top - 11:59:00 up 49 days,  2:09,  3 users,  load average: 2.32, 1.07, 0.61
Tasks: 172 total,   2 running, 170 sleeping,   0 stopped,   0 zombie
Cpu0  : 79.7%us,  5.3%sy,  0.0%ni, 11.0%id,  4.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  : 79.0%us,  2.7%sy,  0.0%ni, 11.7%id,  5.3%wa,  0.0%hi,  1.3%si,  0.0%st
Mem:   2058336k total,  2043952k used,    14384k free,     5012k buffers
Swap:  4112600k total,   618632k used,  3493968k free,   624212k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
12799 oracle    18   0  819m 187m 165m R   80  9.3   0:20.99 oracleXE (LOCAL=NO)
12725 javaus    25   0 1548m 850m 5644 S   38 42.3  10:55.63 /java/jdk1.5.0_12/bin/java -Xmx1024m -XX:MaxPermSize=256m -Djava
16666 oracle    16   0  799m 187m 184m S   35  9.3   0:36.88 oracleXE (LOCAL=NO)
16662 oracle    15   0  798m 189m 187m S   10  9.4   0:33.71 oracleXE (LOCAL=NO)
16935 pxlk      15   0  134m 5132 3872 S    2  0.2   0:04.77 smbd -D
  206 root      10  -5     0    0    0 S    1  0.0  18:34.27 [kswapd0]
17901 root      15   0 12720 1144  816 R    0  0.1   0:03.00 top -c
    1 root      15   0 10324  384  352 S    0  0.0   0:02.26 init [5]
    2 root      RT  -5     0    0    0 S    0  0.0   0:00.01 [migration/0]
    3 root      34  19     0    0    0 S    0  0.0   0:00.01 [ksoftirqd/0]
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37198230
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!,

Если проц двухядерный, а не гипертреадинг. Проверь разницу в выполнении несколькими сессиями одновременно, сначала в 1 поток, потом 2, 3, 4:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
--мастер
create table test (n number);
lock table test in exclusive mode;

--запуск параллельных слейвов 1,2,3...

commit;

--слейвы каждый в своем sqlplus
set serveroutput on
declare
   t timestamp := localtimestamp;
   n number :=  0 ;
begin
   lock table test in share mode;
   t := localtimestamp;
   for i in  1 ..1e8 loop --1e8 - выбрать по вкусу секунд на больше 10.
      n := n+i;
   end loop;
   dbms_output.put_line((localtimestamp-t)||' n='||n);
   commit;
end;
/
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37198265
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как все сложно... Oraclе не пишет что-нибудь на подобии такого в лог:

Код: plaintext
1.
Date		28.03.2011 15:51:54
Detected 24 CPUs. This is an informational message; no user action is required.

Yo.!лимит 11гб датафайлы

Из скольки датафайлов может состоять "одна бд"?
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37198315
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklinКак все сложно... Oraclе не пишет что-нибудь на подобии такого в лог:

Код: plaintext
1.
Date		28.03.2011 15:51:54
Detected 24 CPUs. This is an informational message; no user action is required.

Yo.!лимит 11гб датафайлы

Из скольки датафайлов может состоять "одна бд"?
а какая разница сколько он надетектит ? использовать то меньше можно

2-2-

проц двухъядерный
http://ark.intel.com/Product.aspx?id=27203

если бы гипертреадинг был включен как я понимаю ось бы 4 проца видела.
с твоим тестом он равномерно разбрасывает по двум процам, но кушают примерно по 25% каждый процесс. но когда влез мой пятый процесс сумарно боле 100% начали кушать:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
top - 14:28:58 up 49 days,  4:39,  7 users,  load average: 1.06, 0.38, 0.18
Tasks: 199 total,   4 running, 195 sleeping,   0 stopped,   0 zombie
Cpu0  : 50.5%us,  0.3%sy,  0.0%ni, 49.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  : 57.7%us,  0.3%sy,  0.0%ni, 40.7%id,  1.3%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2058336k total,  2029708k used,    28628k free,     7928k buffers
Swap:  4112600k total,   868044k used,  3244556k free,   509116k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
18945 oracle    16   0  797m  24m  21m R   23  1.2   0:04.34 oracleXE (LOCAL=NO)
18852 oracle    16   0  798m  35m  32m S   23  1.8   0:04.57 oracleXE (LOCAL=NO)
18985 oracle    16   0  797m  24m  21m S   20  1.2   0:04.44 oracleXE (LOCAL=NO)
12856 oracle    15   0  802m 177m 174m S   20  8.8   1:15.18 oracleXE (LOCAL=NO)
18899 oracle    16   0  797m  24m  22m S   20  1.2   0:04.44 oracleXE (LOCAL=NO)
12725 javaus    25   0 1521m 1.0g 3476 S    2 50.7  14:04.09 /java/jdk1.5.0_12/bin/java -Xmx1024m -XX:MaxPermSize=256m -Djava
17901 root      15   0 12720 1052  736 R    1  0.1   0:27.03 top -c
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37198329
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklinИз скольки датафайлов может состоять "одна бд"?
65535 на сколько я помню. в 10g было сделано так, реально лимит ~5.2гб но с таблеспейсом систем. т.е. расчет что систем не выростит выше 1.2 и юзерскому гарантированно достанется 4гб. реально у меня 4.1 гб получилась помню.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37198348
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!,

Может там реализован наружний лимитатор, который специально занимает проц пустыми циклами при одновременной нагрузке :).
Интересовало влияние количества потоков на внутренний замер через dbms_output(timestamp), то есть прикладная многопроцессорность.
По идее должно быть типа:
1 поток - 10 секунд
2 потока - 10 секунд каждый
3 потока - 16 секунд каждый
4 потока - 21 секунд каждый
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37198386
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!65535 на сколько я помню. в 10g было сделано так, реально лимит ~5.2гб но с таблеспейсом систем. т.е. расчет что систем не выростит выше 1.2 и юзерскому гарантированно достанется 4гб. реально у меня 4.1 гб получилась помню.

Я Express редакцию имел ввиду. Например, MS SQL 2008 R2 Express Edition имея ограничение на размер бд в 10 гигабайт, может "нести на борту" 32 768 баз. При этом размер хранилища FILESTREAM не входит в эти 10 гиг.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37198400
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin,

По лицензии - Оракл XE 11gR2 всего 11ГБ на пользовательские данные, не включая внешние (bfile, external table) на один сервер.
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37198413
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,

Понятно. Спасибо!
...
Рейтинг: 0 / 0
Oracle XE: a five years of no progress
    #37198457
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
License Rights...
Any use of the Oracle Database Express Edition is subject to the following limitations;
1. Express Edition is limited to a single instance on any server;
2. Express Edition may be installed on a multiple CPU server, but may only be executed on one processor in any server;
3. Express Edition may only be used to support up to 11 GB of user data (not including Express Edition system data);
4. Express Edition may use up to 1 GB RAM of available memory.
...
Рейтинг: 0 / 0
200 сообщений из 200, показаны все 8 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Oracle XE: a five years of no progress
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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