|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 14:26 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 лицензии обойдется ) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 15:16 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 15:54 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.! 1. SQL более наворочен, есть и regexp и model clouse это только вам так кажется Yo.! 2. PL/SQL по прежнему на голову выше аналог из db2 SQLPL да, так есть, аналогов PL/SQL нету и это хорошо, если бы так и осталось. Yo.! 3. версионные навороты попрежнему не доступны в db2 (тот же флашбэк квери ) ненадо Yo.! 4. Вебная администрилка в db2 так и не появилась и небудет, что и хорошо ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 16:00 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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$ переваливают. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 17:47 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Favn, А как то, что XE "завис" в развитии помогло хоть популяризации дибиту? ЗЫ. Кажется Оракл грозился выпустить XE11. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 18:03 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Точно грозится давно (и скоро??) уже. Пруф )) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 18:07 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
SiemarglА как то, что XE "завис" в развитии помогло хоть популяризации дибиту?А почему оно должно было помочь? Мы вроде СУБД сравниваем, а не их популяризацию. На своем примере - использовал Firebird, пока DB2 Express-C не появился. Express'ы от MS и Oracle даже не рассматривал из-за ограничений на БД и память. Сейчас Firebird юзаю только для переносимого embedded без установки. Статистику чужих примеров собирать не вижу ни смысла, ни возможности. SiemarglЗЫ. Кажется Оракл грозился выпустить XE11.Ну, когда угрозы станут реальностью, тогда и можно быдет с ним кого-нибудь сравнивать. В любом случае, скорость обновления на фоне Express-C, обновляемой примерно через 1-2 фикспака, не очень впечатляет. :) А пока говорить, что бесплатная DB2 была порезана по ресурсам на фоне старого XE10, который уже пятилетку без всякой поддержки - как-то странно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:05 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
SiemarglТочно грозится давно (и скоро??) уже.Интересно, что их останавливает? :) А DB2 Express-C team по ссылке в первом посте грозится поддержку PL/SQL в Express-C добавить. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:09 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
2Yo! Кстати, DB2 Workgroup теперь до 64Гб ОП и туда добавили pureScale (аналог RAC). За 15000$ (включая год поддержки) на любой сокет. Цену на Oracle SE приводить? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:19 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
FavnSiemarglТочно грозится давно (и скоро??) уже.Интересно, что их останавливает? :) Не хотят, очевидно. >Мы вроде СУБД сравниваем, а не их популяризацию. А неинтересно сравнивать то, что почти не встречается. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:21 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
SiemarglА неинтересно сравнивать то, что почти не встречается.А можно ссылку на "почти не встречается" по сравнению с Оракл в цифрах? Понятно, что Оракл впереди, но слухи о "почти не встречается", мягко говоря, сильно преувеличены :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:26 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Favn2Yo! Кстати, DB2 Workgroup теперь до 64Гб ОП и туда добавили pureScale (аналог RAC). За 15000$ (включая год поддержки) на любой сокет. Цену на Oracle SE приводить? :) ну pureScale все таки далеко не аналог RAC, это скорее компонент оракового exadata. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:28 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Favn, например в количестве вакансий. например2, в количестве инсталляций попадающихся под руку. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:30 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
И 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гб на датафайлы все портит ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:40 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!ну pureScale все таки далеко не аналог RAC, это скорее компонент оракового exadata.Почему? Тем более в контексте Workgroup/Standard? PureScale уже есть на x86 платформах. Не знаю, только от IBM или нет, но тем не менее. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:40 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Siemarglнапример2, в количестве инсталляций попадающихся под руку.Под мою руку попадаются в основном инсталляции DB2. Вряд ли это что-то доказывает :) По исследованиям рынка, помнится, DB2 отстает от Оракла и примерно делит 2-3 места с MS SQL. Вряд ли это называется "почти не встречается". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:45 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:48 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:52 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!вообщем можно спорить, можно забить, но факт в том, что по ключевым позициям оракл XE по прежнему выигрывает. вот только 4гб на датафайлы все портит Кроме версионности, нужность которой с такими лимитами сомнительна, выигрышей так и не обнаружил. А лимиты - они да, они портят :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:55 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
FavnSiemarglнапример2, в количестве инсталляций попадающихся под руку.Под мою руку попадаются в основном инсталляции DB2. Вряд ли это что-то доказывает :) По исследованиям рынка, помнится, DB2 отстает от Оракла и примерно делит 2-3 места с MS SQL. Вряд ли это называется "почти не встречается". 1. В мире, а не в России. 2. Макрет шаре дают в деньгах, а не в кол-ве инсталляций. А IBM не дешевая фирма ) Ладно, фиг с ним, а как интересно 1С на дибиту работает - не видел? (На ХЕ-й Оракл 1С не встанет) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:56 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
SiemarglЛадно, фиг с ним, а как интересно 1С на дибиту работает - не видел? (На ХЕ-й Оракл 1С не встанет)Я с 1С не работаю никак. Но где-то на этом форуме недавно пробегали ссылки на примеры инсталляции и т.д. Вроде как 1С-ники общались с IBM, даже параметры какие-то специальные в настройках 1С под DB2 добавили. Вообще, как я понял, 1С любит именно блокировочники, а DB2 как раз такой :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 20:02 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 20:16 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Не работал ни с тем ни другим. Но если верно то, что написано в статье: 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 для продакшена, только может для обучения и не более того. Отсутствие фиксов - незачет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2010, 13:51 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
SiemarglFavnSiemarglнапример2, в количестве инсталляций попадающихся под руку.Под мою руку попадаются в основном инсталляции DB2. Вряд ли это что-то доказывает :) По исследованиям рынка, помнится, DB2 отстает от Оракла и примерно делит 2-3 места с MS SQL. Вряд ли это называется "почти не встречается". 1. В мире, а не в России. 2. Макрет шаре дают в деньгах, а не в кол-ве инсталляций. А IBM не дешевая фирма ) Ладно, фиг с ним, а как интересно 1С на дибиту работает - не видел? (На ХЕ-й Оракл 1С не встанет) 1. "В мире" платят больше, чем в РФ (гамзпром и ржд не всчет) 2. IBM и маркетинг две несовместимые вещи 3. Работает, и даже в комплекте идет. И даже, как говорил Favn настройки есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2010, 13:54 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Абсолют, знаю, что работает с 1С, а вот со свидетелем бы толковым поговорить.... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2010, 14:14 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
FavnДа и ядро соптимизировали. На Linux на треды перешли, например (в отличие от Оракл, кстати).А Оракл еще нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2010, 21:21 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
SiemarglАбсолют, знаю, что работает с 1С, а вот со свидетелем бы толковым поговорить.... У нас работает 1С на DB2, но оно как-бы параллельно от меня, поэтому ничего толкового не скажу (кроме констатации факта). Кстати, 1C заявляет что работает и с Oracle (11gR1 и 10gR2) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2010, 12:59 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Senya_LFavnДа и ядро соптимизировали. На Linux на треды перешли, например (в отличие от Оракл, кстати).А Оракл еще нет?А что это Yo молчит? А то как какая СУБД, он сразу найдет что сказать, а тут так скромно отмалчивается? Видно процессы у Оракла легковесны аки пушинки и не стоит обращать внимания на такие мелочи архитектуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2010, 18:44 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
const64, 1С c XE не работает. Senya_L, вопрос малоинтересный - а не все ли равно, как сделано внутри черной коробочки? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2010, 19:18 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Вот как раз таки очень интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2010, 19:20 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Senya_LА что это Yo молчит? А то как какая СУБД, он сразу найдет что сказать, а тут так скромно отмалчивается? Видно процессы у Оракла легковесны аки пушинки и не стоит обращать внимания на такие мелочи архитектуры. Yo! лениво перетирать одно и то же, Yo! ждет достойной темы для беспощадного флейма тхредовую модель оракл имеет с лохматых 90х для виндовой архитектуры. как известно оракл это код на С, т.е. перенести тхредовую модель на *nix оракл мог бы очень быстро. тхредовую же модель для винды оракл ввел не потому, что тхреды имеют преимущества, а потому что процессорная модель под виндой страшно тормозила. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2010, 16:24 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!Yo! ждет достойной темы для беспощадного флейма Дык... Yo.!а потому что процессорная модель под виндой страшно тормозила. и виновата в этом, конечно, винда?! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2010, 16:34 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!тхредовую модель оракл имеет с лохматых 90х для виндовой архитектуры. То бишь потоки в оракуле раньше чем в самой винде... Ну-ну. Или "лохматыми" считается исключительно вторая половина 90-х?.. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2010, 16:36 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!а потому что процесс ор ная модель под виндой страшно тормозила. IMHO, здесь лишние буковки... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2010, 16:42 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
pkarklin и виновата в этом, конечно, винда?! у оракла есть нота на металинке где, так и говориться - процессы под виндой тормозили, пришлось воротить тхреды. на сколько мне известно Informix и Db2 по тем же причинам наворотили тхреды примерно в тот же период. только информикс вообще решил тхреды самостоятельно реализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2010, 16:45 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!у оракла есть нота на металинке где, так и говориться - процессы под виндой тормозили, пришлось воротить тхреды. Так, м.б., как в той поговорке, не надо со своим уставом в чужой монастырь, ну, или в Тулу, со своим самоваром. ;) ЗЫ. Нет, у меня, уже давно, доступа на металинк. Денежку за этот самый доступ надо платить (ну Вы подумайте только), в отличие от Microsoft KB. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2010, 16:59 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
pkarklin, передергивать не надо. Платится Ораклу за саппорт и апдейты (версионные апдейты инклудед), а металинк довесок на халяву. Модель MS - KB и простые апдейты на халяву, а версионные по полной цене, или SA за 50% каждые два года. Хрен редьки не слаще, но для бесплатных версий у MS и редька бесплатно ) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2010, 18:19 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
SiemarglМодель MS - KB и простые апдейты на халяву, а версионные по полной цене, или SA за 50% каждые два года. Давайте так. SA подразумевает выпуск "апдейта" по данный конкретный случай (к слову ждем не дождемся одного конкретного). Все остальное - абсолютно бесплатно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2010, 18:24 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
pkarklin, не понял. SA покрывает переход например SQL 2008-> SQL 2008 R2 -> SQL 2010. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2010, 18:54 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 рабочий день. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2010, 20:06 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 поддержки дает, скажем так, немного ))))))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2010, 20:58 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
pkarklin, Там вообще написано, что для Open License - МПХ поддержки ((((((( ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2010, 21:10 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
ак все-таки, что настчет патчей на XE? В статье написана правда? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2010, 23:18 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
pkarklinSiemarglне понял. SA покрывает переход например SQL 2008-> SQL 2008 R2 -> SQL 2010. Не совсем так, точнее, совсем не так: http://www.microsoft.com/rus/licensing/volume/SoftwareAssurance/AdvantagesOverview/Support.aspx товарищи, давайте по теме плз т.е. только DB2 и Оракл спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2010, 02:31 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!pkarklin и виновата в этом, конечно, винда?! у оракла есть нота на металинке где, так и говориться - процессы под виндой тормозили, пришлось воротить тхреды. на сколько мне известно Informix и Db2 по тем же причинам наворотили тхреды примерно в тот же период. только информикс вообще решил тхреды самостоятельно реализовать. это все делали, такова реальность вынь-платформы хотя в винде есть "размер" и поменьше треда, фибер называется, но это не так актуально сейчас, как 10-15 лет назад, когда контекст свитч считалось долго... информикс раньше, если неошибаюсь, только юникс любил все оттуда и тянется. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2010, 02:40 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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.
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 раза больше ядер и памяти и нет ограничения на размер базы. Правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2010, 14:11 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 не выйдешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2010, 15:33 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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, которых нет в оракле... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2010, 16:45 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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, которых нет в оракле... согласен, но тут есть нюанс: я вам могу показать где задачи, которые без версионных уровней через анус приходиться решать, а вы мне показать задачу где без блокировочных никак не покажите. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2010, 17:21 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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. Вот их сравнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2010, 17:32 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 и решил, что подобные фокусы можно эмулировать ведением исторической таблицы. Оно, может, и не будет во всех деталях как в оракле работать, но для этого примера - будет. Поправьте меня, если я не прав - я действительно почти не знаком с ораклом... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2010, 18:36 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
FavnИдексы по функциям строить нельзя. Можно сделать generated поле и по нему построить индекс. ну раз нельзя то незачет ставим. по sqlpl %rowtype, bulk insert зачет, а курсор я не увидел возможности передать его на клент и в другую процедуру (собственно для чего и делался ref_cursor) xml поищу чуть другой документ, там хорошо в двух абзацах оракл, в чем принципиально отличается мифический binary storage от ораклового, который вроде как не бинари. странно, что в этом документе не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2010, 19:42 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark BarinsteinОбычно нет особого смысла сравнивать чистые вызовы функци. Контекст, в котором вызовы функций используются (парсинг, оптимизирование запросов, доступ к данным, возврат результата клиенту и т.д.), как правило имеет гораздо большие накладные расходы, и в подавляющем большинстве промышленных случаев вы разницу в производительности таких функций просто не заметите. тут не соглашусь. если у вас регексп прочесывает таблицы в десятки миллионов записей и (соответственно вызывается на каждую запись) то одно только гоняние из памяти db2 в память JVM уже заметную разницу покажет. Mark BarinsteinКстати, C функции в db2 можно и not fenced сделать (в оракле, кажется, нельзя), и тогда вы нигде разницы вообще не увидите. наоборот, proC процедура не умеет быть fenced (терминами ибм) по индексу и флешбэк не зачет, сами понимаете, что цена такой эмуляции не сравнима и потому на адекватный аналог не тянет. как ни крути в оракле более элегантное и что важно оптимальное предложение. хотя и 5 лет без прогресса ... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2010, 19:52 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
флешбек не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2010, 20:45 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!ну раз нельзя то незачет ставим.Индекс можно построить? Можно. Оптимизатор его подхватит? Подхватит. В связи с чем незачет? Поле "лишнее" создается? Да, такой вот заточенный на производительность механизм - индексы строятся только по лежащим в таблице данным. И что в этом страшного? Особенно на фоне извратов, необходимых в некоторых "уделывающих" СУБД для безобидного испоьзования (в т.ч. индексирования) null, например. И тем более того, что DDL в DB2 транзакционный, в отличие от тех же "уделывающих" :) Yo.!а курсор я не увидел возможности передать его на клент и в другую процедуру (собственно для чего и делался ref_cursor)Да хоть кучу курсоров. Можно посмотреть тут и вот тут , например. Yo.!xml поищу чуть другой документ, там хорошо в двух абзацах оракл, в чем принципиально отличается мифический binary storage от ораклового, который вроде как не бинари. странно, что в этом документе не было.Жду с нетерпением. Может, хоть пойму, что же в настоящем иерархическом движке pureXML "мифического". Кстати, выражения (в т.ч. regexp) в DB2 есть в XML индексах. ЗЫ. Что-то окромя странных массивов в SQL (model clause) и мягко говоря избыточного в условиях 1ГБ ОП SNAPSHOT я признаков "уделывания" не обнаружил :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2010, 22:45 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Favn, XE конечно устарел, но +10g в любом релизе хороша +в нем есть HTML DB = APEX -+патчи нужны???? наверное, но не в пятидесятой инкарнации -ресурсоемкость осталась не по детски => как конструктор для квикстарта XE - подойдет, апдейт и рыночные перспективы спецов по ней обеспечат им и их приложениям будущее. На полноценное ее использование никто не расчитывает - не нужно, всем нужна "морковка". ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2010, 23:31 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
FavnИндекс можно построить? Можно. Оптимизатор его подхватит? Подхватит. В связи с чем незачет? что такое лишняя колонка, лишняя колонка лишние блоки, лишние блоки кушают лишнее место в кеше + лишнее и/о. в такую игру можно поиграть, но чур я буду фаном фокспро и говорить вообщем-то и на фокспро можно сделать все что умеет db2 express-c. клиент-сервер через soap, лог транзакций тригером, огрничение в 2гб UNION FavnЗЫ. Что-то окромя странных массивов в SQL (model clause) и мягко говоря избыточного в условиях 1ГБ ОП SNAPSHOT я признаков "уделывания" не обнаружил :) но это не значит, что их нет ... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2010, 00:22 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
У меня очень глупый вопрос. Как часто вы используете этот адовый регексовый индекс? А, ну и да, вопрос чисто для Yo! : Сколько вам потребуется времени, что бы FoxPro в Db2 Express-C переделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2010, 01:08 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
АбсолютУ меня очень глупый вопрос. Как часто вы используете этот адовый регексовый индекс? редко но метко. АбсолютА, ну и да, вопрос чисто для 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2010, 02:24 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
"как я понял где такая картина" нужно читать как "как я понял у нас примерно такая картина:" ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2010, 02:25 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 - я могу контролировать глубину истории - я могу сохранять доп. атрибуты: типа - кто в Ленина стрелял и из какого оружия :) Как-то я делал такие вещи в одной из своей систем - надо было фиксировать, как там документы в прошлом выглядели. И нормально оно работало, систему сильно не перегружало, никто никого не убил. Наверное, потому что я там и админом был :) А поскольку этот флешбек в основном и используется для того, чтоб удалённые по неосторожности записи вернуть, то и мой флешбек для ответственных таблиц может подойти. Вы вот скажите, этот флешбек часто для чего-то другого в продакшене используют? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2010, 22:18 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark Barinstein Да это же просто прекомпилятор, который embedded sql в нативные C/C++ вызовы преобразует, и на выходе получается обычный исходник, который потом подаётся на вход компилятору C/C++. В db2 похожий есть с аналогичными принципами, хотя и есть разница в деталях. конечно есть, жава называется. в db2 абсолютно идентично присобачена жава. Mark Barinstein запускаются в отдельном адресном пространстве. где вы такое прочитали ? pro*c собственно потому и вымерло, что запускалось в юзерском адресном пространстве без защиты памяти сервера перед шаловливыми ручками. Mark BarinsteinЯ ведь не начинаю незачётами в оракла бросаться из-за того, что он в лог значительно больше пишет, или из-за того, что одна и та же саповская база, загруженная в оракл и в дб2 на одной и той-же системе в оракле на диске места больше занимает. У всех разная реализация. если и больше то понятно почему. потому, что дизайнеры оракла оказались дальновиднее и не напихали структуру блокировок в память. да в оракле блок скорее всего меньше данных содержит т.к. в нем зарезервировано место под блокировки, но преимущество которое за счет этого получает оракл перекрывает все расходы с лихвой (экономия памяти, не нужность эскалации). Mark BarinsteinЯ, например, не раз слышал изречения оракловых админов, что "за флешбек на продакшене надо убивать". Мне трудно судить об этом, может, неопытные они были... говорят в Москве кур доят (с) в общем я привел привел аргументы, с вашими тоже могу согласиться. да можно жить и без флешбэк, можно и без функциональных индексов, даже без версионности наверно можно. в конце концов есть продакшены и на фокспро, просто мне удобней эти и многие другие вещи иметь, пусть я их и не каждый день использую. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 01:09 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 10:44 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Ошибочка вышла: db2 prep И ещё, если у меня нет embedded sql в программе, мне этот промежуточный шаг не нужен ни в java, ни c. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 10:59 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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.
Когда можно было бы написать так: Код: plaintext 1. 2. 3. 4.
Это ещё самый безобидный пример того, что без PL/SQL получается лучше. Но народ к этому не приучен. Норовят написать десятки процедур и функций, открыть кучу курсоров, получая жирное тормознутое чудовище, где нередко можно обойтись даже одним SQL-запросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 12:59 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 запускается на своём родном сервере и только тогда начинает обслуживать транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 13:05 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 вы на вмваре предлагаете сажать ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 13:47 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 13:48 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 только для целей восстановления блоков данных, с которыми работали незавершённые на момент падения транзакции. Он не начинает обслуживать клиентские транзакции при этом. а клиентов упавшей ноды куда девают ? расскидывают по оставшимся ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 14:03 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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.!а клиентов упавшей ноды куда девают ? расскидывают по оставшимся ?Да. Причем по желанию (настройки сессии) сессия может либо все свои транзакции на одном мембере выполнять, либо новую транзакцию на новом (если оно вдруг определит, что новый мембер менее загружен, чем остальные), и всё это прозрачно для приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 14:36 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!тут просто расжевывается почему PowerHA нужно иметь минимум два, иначе потеряв единственный PowerHA "You could lose everything". совершенно справедливо вобщем-то.Абсолютно не справедливо. Объясните, каким образом даже при одном PowerHA при его падении я теряю "всё", если это "всё" находится на общем диске? Я ведь могу запустить его на выжившем мембере... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 14:49 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 их развенчали много лет назад. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 14:56 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark BarinsteinYo.!тут просто расжевывается почему PowerHA нужно иметь минимум два, иначе потеряв единственный PowerHA "You could lose everything". совершенно справедливо вобщем-то.Абсолютно не справедливо. Объясните, каким образом даже при одном PowerHA при его падении я теряю "всё", если это "всё" находится на общем диске? Я ведь могу запустить его на выжившем мембере... вместо выжившего. потеряв PowerHA вы теряете доступность всего кластера, то самое "все". а как вы поднимать потом будете из бэкапа или заменой ноды это уже не суть важно. Mark Barinsteinя могу эту "виртуальную" таблицу сразу же в соединении с другими таблицами использовать в этом же запросе. ну может конечно где-то такое может пригодиться, но я не встречал потребности больше чем вернуть значение сиквенса из инсерта. ну пусть будет зачет, тогда вам в ответ сразу 2: автономные транзакции и кластер (не путать с RAC) в oracle xe ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 15:13 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 15:46 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!вместо выжившего. потеряв PowerHA вы теряете доступность всего кластера, то самое "все". а как вы поднимать потом будете из бэкапа или заменой ноды это уже не суть важно.Потерять "всё" и потерять временно доступность кластера - это не одно и то же. Здесь оракл слишком вольно бросается словами. Yo.!ну пусть будет зачет, тогда вам в ответ сразу 2: автономные транзакции и кластер (не путать с RAC) в oracle xe О! Первый зачёт! Пойду отпраздную :) Autonomous transactions are supported . Не смог найти ссылку на кластер с XE. Не поможете? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 15:58 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 16:39 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark BarinsteinПотерять "всё" и потерять временно доступность кластера - это не одно и то же. Здесь оракл слишком вольно бросается словами. не согласен, раз уж речь о high avilability то слова совершенно справедливы. а то при наличии бэкапа на ленте множно и при выгорании всех нод говорить что вобщем-то все не потеряно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 17:00 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov А это ничего, что вариант с джоинами работает как минимум не быстрее, а в ряде случаев медленнее?.. Функция не будет читать t3 если значение найдено в t2. Join - будет всегда. Видите ли, вы учитываете далеко не все расходы. Скажем, затраты на сам вызов функции. Потом, Код: plaintext 1. 2.
Код: plaintext 1. 2.
И, конечно, я постарался бы приложить все усилия, чтобы t2 и t3 как-то объединить. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 19:26 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 19:33 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Victor Metelitsa Можно ещё повспоминать про фичи, присутствующие в DB2 и отсутствующие в Oracle - select from insert, update, delete. Это так в фантазиях IBM выглядят стандартные insert/update/delete...returning?.. Ага, про ораклиные стандартные я написал "Есть какие-то костыли, но на уровне PL/SQL". (Может, не совсем точно выразился, но суть, наверное, понятна). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 19:39 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 будет происходить, как при "взрослом" партиционировании. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 19:55 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Victor Metelitsaвыполняются по-разному. Если не забыть left, то с большой вероятностью и тот и другой сведутся к nested loop. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 19:56 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.! Mark BarinsteinПотерять "всё" и потерять временно доступность кластера - это не одно и то же. Здесь оракл слишком вольно бросается словами. не согласен, раз уж речь о high avilability то слова совершенно справедливы. а то при наличии бэкапа на ленте множно и при выгорании всех нод говорить что вобщем-то все не потеряно.В любом случае речь тут ведётся о событии (падение 2-х серверов одновременно), которое вы навряд ли вообще встретите в реальности, особенно, если речь о System p. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 19:58 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 20:31 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!ну если у вас задача чистый tpc-c гонять то может быть, а вот пару одновременных отчетов даже по миллионным табличкам явно другие цифирки в среднем выдадут.Да никто не гоняет сканирующие отчёты по многомиллионным табличкам с RS или RR изоляцией, это никому не нужно. Если лень нормальные отчётные системы делать, то достаточно CS дефолтового или даже UR. А вообще, вы так утверждаете, как будто у вас большой опыт администрирования db2. Типа, мне по-боку, что там советуется, я сам лучше угадываю... Yo.!а это все и в оракле есть: range-partitioning, index orgonized table и т.п.Range-partitioning в XE? Yo.!бывает, бывает. и самолеты в окошко влетают и кластер из мегонадежнных мейнфремов (parallel syplex) бывает падает.Здесь неплохо бы смотрелась подтверждающая ссылка (про упавший parallel sysplex). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 21:52 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 22:54 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 имеем ввиду. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 23:22 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!мне не жалко http://www.danskebank.com/en-uk/press/News/Pages/pr20030403a.aspx В догонку: Там сам sysplex-то не упал. Там всего лишь внутри одного из приложений в parallel sysplex (db2) произошла ошибка. Это всё равно как на вопрос "приведите пример падения ОС" ответить, что, мол, вот случай, когда с данными в db2 на этой ОС случилась какая-то лажа - вот оно, падение, и произошло... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 23:37 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark BarinsteinА я про партиционирование в express-c писАл. я увидел что этот Range-partitioning в рвазделе "Table partitioning and data organization schemes" и решил, что это аналог range partitioning в оркале. сейчас пригляделся, понял что не оно, но что это даже со второго раза не понял. Mark Barinstein Так вот, интересует ссылка, где Parallel Sysplex упал из-за одновременного отказа всех CF, мы же именно одновременный отказ обоих PowerHA имеем ввиду. я говорил о падающих мейнфреймах с Parallel Sysplex и вобщем-то не соврал. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 23:48 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Siemargl, Здесь об 1С и DB2 https://www.ibm.com/developerworks/mydeveloperworks/groups/service/html/communityview?communityUuid=38f00ae6-df66-478c-b8ed-ebe8e5ba8cf7 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2010, 01:07 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Если не забыть left, то с большой вероятностью и тот и другой сведутся к nested loop. Вы просто потестируйте. Начните с примера, который я привёл вначале. Функция или два левых джойна - что быстрее и насколько? Я многократно убеждался, что джойны, мягко говоря, много лучше. На всякий случай сделал сейчас ещё один тест. Пожалуй, переборщил с количеством данных (в таблице t1, реальные данные с купонами авиабилетов, 46 миллионов записей, в таблице t2 > 2000 городов и в t3 > 500 аэропортов) - с джойнами выполнилось за пару минут на 9-м и 10-м оракле (запустил одновременно на двух серверах), а с функцией же... прошло больше часа, но как бы месяц или год не потребовался. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2010, 10:37 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
(я group by сделал) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2010, 10:39 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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.
Можно так в 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 упадут, то надо бы самому подумать, а какова вероятность такого события? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2010, 11:06 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Месяц-таки не потребовался, разница оказалась не такая большая - всего лишь в 26 раз на 10gR2 и в 36 раз на 9iR2... (компьютеры сильно разные). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2010, 13:02 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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. если железячки только две на вмваре весь кластер сажать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2010, 16:49 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2010, 18:08 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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.
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2010, 22:20 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
SiemarglSenya_L, вопрос малоинтересный - а не все ли равно, как сделано внутри черной коробочки?Мне - да. Тебе вижу тоже. Но дело в другом. Yo как-то критиковал Firebird за то, что у него нет нормального SMP (тут пока не поспоришь до выхода 3-ки) и в частности утверждал, что CS - это несерьезно. Так как же у Oracle построена архитектура? Как interprocess communication организован? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2010, 18:57 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark BarinsteinДа, наверное можно. Только это целую программу в instead of update придётся написать, чтоб корректно обработать возможное перемещение строки из партиции в другую партицию. ну да, одну-две минуты придется потратить на каждый тригер, не вижу в этом проблему. зато я смогу там более сложное раскладывание, чем банальный ренж заложить. Mark Barinstein Хотел бы я взглянуть на такой код (а ведь все три триггера ещё и переписывать надо будет при attach / detach партиции), скажем, для 12 партиций... кстати, я могу в тригере нарисовать создание "партиции" и создавать их по мере надобности автоматом. а в дб2 есть тригеры на вью ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2010, 19:59 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!кстати, я могу в тригере нарисовать создание "партиции" и создавать их по мере надобности автоматом. а в дб2 есть тригеры на вью ?DDL в instead of tirgger? Или в другом каком? Instead of triggers в db2 . ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2010, 21:31 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!Mark BarinsteinДа, наверное можно. Только это целую программу в instead of update придётся написать, чтоб корректно обработать возможное перемещение строки из партиции в другую партицию. ну да, одну-две минуты придется потратить на каждый тригер, не вижу в этом проблему.Тогда это не займёт у вас много времени. Наришите, пожалуйста, тогда instead of update триггер для, скажем , 12 партиций: - 1-я: за январь 2010 и раньше - 10 остальных, по месяцу 2010-го, начиная с февраля - последняя, за декабрь 2010 и дальше а потом сравним элегантность решений - в db2 и вашего... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2010, 22:04 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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.
Код: 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.
исходые данные 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, проверить план ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2010, 18:07 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 (<новый диапазон>); Немного элегантнее получается :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2010, 19:02 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
согласен, чуть элегантней но не принципиально. в instead of update будет один if с проверкой и 3 динамических SQL ну еще 3 минуты кодирования. я бы не увидел особого преимущества и если бы на пару часов кодирования была бы разница, главное что работать это дело будет так же эффективно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2010, 19:58 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!согласен, чуть элегантней но не принципиально. в instead of update будет один if с проверкой и 3 динамических SQL ну еще 3 минуты кодирования. я бы не увидел особого преимущества и если бы на пару часов кодирования была бы разница, главное что работать это дело будет так же эффективно.Когда это Динамический SQL = Статическому SQL по быстроте?? Такие вещи как Планы выполнения и их кеширование и т.д. - давным давно отменили-что-ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 01:35 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
WarstoneКогда это Динамический SQL = Статическому SQL по быстроте?? Такие вещи как Планы выполнения и их кеширование и т.д. - давным давно отменили-что-ли? если речь о кешировании и планах то Динамический SQL = Статическому, думаю с рождения. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 01:56 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!WarstoneКогда это Динамический SQL = Статическому SQL по быстроте?? Такие вещи как Планы выполнения и их кеширование и т.д. - давным давно отменили-что-ли? если речь о кешировании и планах то Динамический SQL = Статическому, думаю с рождения.И оптимизация планов выполнения запросов, проводимая каждый раз при вставки одной записи, на себя ничего, конечно, не отъедает? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 08:36 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
WarstoneYo.!пропущено... если речь о кешировании и планах то Динамический SQL = Статическому, думаю с рождения.И оптимизация планов выполнения запросов, проводимая каждый раз при вставки одной записи, на себя ничего, конечно, не отъедает? Но и заниматься таким было не обязательно. Если вы делаете N похожих таблиц, VIEW и триггер над ними, разумно написать скрипт, генерирующий, кроме DDL таблиц и view, код триггера, а не генерировать SQL в триггере. Да, получится длинный уродливый текст с огромным количеством IF, но вручную его писать не нужно. а будет ли этот явный код медленнее, чем то, что DB2 неявно сделает внутри себя - это вопрос, требующий проверки. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 09:00 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Victor MetelitsaНо и заниматься таким было не обязательно. Если вы делаете N похожих таблиц, VIEW и триггер над ними, разумно написать скрипт, генерирующий, кроме DDL таблиц и view, код триггера, а не генерировать SQL в триггере. Да, получится длинный уродливый текст с огромным количеством IF, но вручную его писать не нужно. а будет ли этот явный код медленнее, чем то, что DB2 неявно сделает внутри себя - это вопрос, требующий проверки.Не надо меня этим лечить, я сам так в Pg делаю. Просто Йо, до этого не додумался... Ну или скромно умолчал... Как всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 10:12 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Результаты тестов на 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.
- без instead of trigger: 2 сек - с instead of trigger: 27 сек (процессор всё время занят на 100%) А на оракле как дела обстоят? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 11:08 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Без динамики в триггере удалось добиться прогресса. Без динамики Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 11:59 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 не будет делать - ему неоткуда такую информацию взять будет... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 12:09 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 строчки тригера на фоне остальной логики никакой погоды уже не сделают. вы там рассказывали, что легко сделаете логгинг для эмуляции фрешбэк, ну давайте хотя бы такую "логику" добавим и сравним на сколько инстеад усугубил в этом случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 12:14 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 12:27 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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.
Про тучи логики в реальной жизни не буду комментировать - жизнь у каждой стстемы своя... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 12:27 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark Barinstein А вы сравните со вставкой в непартиционированную таблицу: а какой смысл ? тогда уж более спортивно было бы сравнивать с партициированной по взрослому. но мне лень, коню ясно, что быстрей чем если бы вы для этого вью flashback пытались бы проэмулировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 12:45 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!Mark Barinstein А вы сравните со вставкой в непартиционированную таблицу: а какой смысл ? тогда уж более спортивно было бы сравнивать с партициированной по взрослому. но мне лень, коню ясно, что быстрей чем если бы вы для этого вью flashback пытались бы проэмулировать.Не мешайте вместе мух (флешбек) и котлеты (партиционирование), они не связаны друг с другом. Давайте рассмотрим цель партиционирования: ускорить работу с большой таблицей путём разбиения её на части, чтобы в зависимости от предиката оно лезло только в часть таблицы, а не во всю. И если из такой таблицы надо делать только чтения, то мы увидим выгоду от этого и в дб2, и в оракле. Но в реальности такую таблицу надо и обновлять, а здесь у оракла могут быть серьёзные проблемы. И накладные расходы на обновление могут убить все выгоды партиционирования по сравнению с непартиционированной таблицой - вот почему я прошу сравнивать с непартиционированной таблицей. Что до моего флешбека, то я не использую там вью, я просто веду историческую таблицу тремя триггерами. Флешбековые запросы я делаю из этой исторической таблицы, а не из основной. Массовые обновления у меня (ну, может, кроме insert) - это действительно тяжёлая операция, которой лучше избегать (update текущей записи и, если это update, то insert новой). Но на паре сотен затронутых записей не так долго и работает, хотя разницу видно хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 14:35 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
2 Mark Barinstein авторЧто до моего флешбека, то я не использую там вью, я просто веду историческую таблицу тремя триггерами. Флешбековые запросы я делаю из этой исторической таблицы, а не из основной. Простите, я не совсем понял. В дб2 нет возможности: Код: plaintext 1. 2. 3. 4. 5. 6.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 14:56 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
2pkarklin речь про партитионинг для бедных, которые не тянут EE edition. кстати, а что мсскл может предложить для стандарт едишено на тему партитионинга ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 15:10 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!кстати, а что мсскл может предложить для стандарт едишено на тему партитионинга ? Тока Partitioned Views. Есть во всех редакциях. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 15:18 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark Barinstein И накладные расходы на обновление могут убить все выгоды партиционирования по сравнению с непартиционированной таблицой - вот почему я прошу сравнивать с непартиционированной таблицей. ну это у вас воображение разыгралось, столь примитивный тригер как-то повлиять на "выгоды" не сможет. еще раз, мой поинт в том, что в реальной задаче по любому будет тригер обрабатывать входные данные + хотя бы базовые аудитные записи оставить. 4 "лишних" строчки в этом тригере добавят не более 10%. Mark BarinsteinЧто до моего флешбека, то я не использую там вью, я просто веду историческую таблицу тремя триггерами. вот и давайте посмотрим как эти 3 тригера повлияют на разницу. добавте в партицированную и во вью эти тригера и будет ли заметна разница теперь. я думаю не особо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 15:23 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!Mark Barinstein И накладные расходы на обновление могут убить все выгоды партиционирования по сравнению с непартиционированной таблицой - вот почему я прошу сравнивать с непартиционированной таблицей. ну это у вас воображение разыгралось, столь примитивный тригер как-то повлиять на "выгоды" не сможет. еще раз, мой поинт в том, что в реальной задаче по любому будет тригер обрабатывать входные данные + хотя бы базовые аудитные записи оставить. 4 "лишних" строчки в этом тригере добавят не более 10%. Да не сравниваем мы здесь флешбек, выключите его у себя! :) Ну вот, а теперь вспомните свои незачёты за какие-то копеечные накладные расходы на fenced java функции, лишние io на функциональные индексы. Вот если где и ставить незачёт, так вот за эти "4 лишних строчки", которые у меня ухудшили производительность запроса в 7 и 13 раз. дб2-шной fenced java и функциональным индексам никогда не удастся так запрос ухудшить. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 16:27 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark BarinsteinДа не сравниваем мы здесь флешбек, выключите его у себя! :)Никак нельзя нащальника! Это святой кароф любый оракдиста ЗЫ. Толку-то от этого флэшбэка... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2010, 16:33 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Senya_L ЗЫ. Толку-то от этого флэшбэка... Реально увеличивает размер члена в споре "Кто круче". ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2010, 09:11 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Флэшбек это оффтоп. Его нет ни в Oracle XE, ни даже в Std. Это EE. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2010, 10:36 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
а текстовая переменная так и не может быть '', только null? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2010, 07:10 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Sgt.Pepperа текстовая переменная так и не может быть '', только null? и это правильно, три раза уже тут пережевывали. SiemarglФлэшбек это оффтоп. Его нет ни в Oracle XE, ни даже в Std. Это EE. фрешбэк квери есть в любой редакции ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2010, 17:56 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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-шного. Вопрос: как всё-таки решают в оракле такую задачу? Может, есть ещё варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 10:48 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark BarinsteinВ оракле я не могу хранить пустое значение в not null поле. Если я сделаю поле с возможностью хранения null, то мой запрос будет выглядеть так: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 12:10 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark Barinstein Вопрос: как всё-таки решают в оракле такую задачу? Может, есть ещё варианты? where NVL(col,'*null*') =:par и соответственно индекс по NVL(col,'*null*') ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 12:53 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!SiemarglФлэшбек это оффтоп. Его нет ни в Oracle XE, ни даже в Std. Это EE. фрешбэк квери есть в любой редакции > alter database flashback on; Нету, а без него далеко не вернешься. ЗЫ. Про пустые строки тут срач уже был. Может хватит. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 18:00 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 20:51 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark BarinsteinЯ пропустил первые три серии (лень искать, простите) Не только Вы. Забавно наблюдать, как даже Метелица, которого я уже скоро десять лет как помню как вдумчивого и грамотного db2-щика, отмечается забавными мыслями "про оракл". Mark Barinsteinи у меня практический вопрос, типа "что делают оракловые разработчики, если...". Чаще всего (следует читать как "я сходу даже не припомню, случается ли вообще другое") им ничего делать не требуется. Причин этому несколько. Во-первых, поиск "по пустой строке" - крайне редкая операция, вот честно, ни разу в жизни не сталкивался с отчётом вроде "люди с пустыми отчествами". Поиск по null в числовом поле, хоть и редок, но на порядки чаще. Во-вторых, null - практически всегда низкоселективное значение, и попытка искать его по индексу проигрывает если не фулскану, то сканированию по лучшему индексу. Если рассматривать сферическую задачу в вакууме, то неграмотный новичок, возможно, и попытается придумать "собственное пустое значение", как Вы предлагаете, но самый простой путь - использовать составной индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 10:05 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
softwarer...Во-первых, поиск "по пустой строке" - крайне редкая операция, вот честно, ни разу в жизни не сталкивался с отчётом вроде "люди с пустыми отчествами". Если рассматривать сферическую задачу в вакууме, то неграмотный новичок, возможно, и попытается придумать "собственное пустое значение", как Вы предлагаете, но самый простой путь - использовать составной индекс.Ну, задача найти людей с незаполненными паспортными данными, номерами телефона всё же встречается не так редко. Причём дело здесь не в индексе даже - по всей таблице только по этому пустому полю редко кто ищет. Вот сферическая задача: поиск по группе записей типа Код: plaintext
Этот же самый запрос я использую для поиска тех, у кого нет паспортных данных. Если я правильно понял про самый простой способ (простите уж неграмотного новичка :)), это использовать для каждого такого поля дополнительное поле-флаг пустого значения? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 10:49 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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, '*'), но это уже больше к проктологам и вынужденным общаться с их продуктами. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 11:47 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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, '*') Я не буду больше спорить, чтобы не затевать четвёртую серию сериала. :) Если для ораклистов это удобно, или, действительно, встречается редко - тоже можно понять. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 12:27 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark BarinsteinЗдесь ведь вопрос удобства программирования. У меня в db2 для строк всегда 1 вариант предиката: ... and passport_no = :passport_no И как Вы поступаете, когда в этом запросе вообще не нужен фильтр по паспорту? Передаёте null и позволяете ему вернуть пустую выборку? ;-) Марк, Вы произнесли именно те ключевые слова - "фильтр" и "динамически" - которые я надеялся услышать, говоря "согласитесь". Чтобы потом отметить одну тонкость. Действительно, запрос вполне может быть один тогда (и в общем-то только тогда), когда к нему применяется некий глобальный фильтр. Но если этот фильтр динамический (что примерно в 100% случаев - единственно профессиональный метод, во всяком случае для Oracle) - разницы нет, один раз научить компонент вовремя подставлять is null не стоит и минуты обсуждения. Если же фильтр таки статический, то рассмотрев типичный QBE-интерфейс (а другой для статики не годится), мы увидим нечто вроде Код: plaintext 1.
и соответственно sql: Код: plaintext 1. 2.
И теперь, если мы попробуем добавить в фильтр строковое поле (два варианта - не нужен поиск по пустым значениям, нужен поиск по пустым значениям), как-то так окажется, что в оракловом случае sql и передача параметров кодируются не сложнее, а то и проще. Mark BarinsteinЕсли для ораклистов это удобно, или, действительно, встречается редко - тоже можно понять. В таком варианте это действительно встречается редко. А с отмиранием Oracle Forms с его жёсткой статикой, полагаю, окончательно потеряет актуальность. А без протокола.. я работал так и я работал эдак, и с Oracle, и с MSSQL. И положа руку на сердце, в случае неоракловых строк геморроя больше, особенно в варианте "в таблице три поля, одно допускает null и не допускает пустые строки, другое допускает пустые строки, но не null, третье допускает и то, и другое, а в форме надо ввести значения для этих трёх полей". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 13:18 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
softwarerMark BarinsteinЯ пропустил первые три серии (лень искать, простите) Не только Вы. Забавно наблюдать, как даже Метелица ... отмечается забавными мыслями "про оракл". Например? Я, на самом деле, не считаю себя большим спецом по DB2, хоть работаю с ней больше 10 лет, иногда перечитываю документацию и т.п. Пробелов много; правда, многие вещи на моём месте просто не нужны. (Вот Марк - другое дело, он действительно DB2-спец). Но приходится работать с Oracle, это оказывается намного сложнее, чем DB2, и это меня бесит. Приходится вникать в такие вещи, которые я вообще даже не хотел бы знать и без которых при работе с DB2 обходился и обхожусь. Понятно, для ораклиста они нормальны, а мне как-то не забавно совсем. Ну ладно, я уже смирился. Придётся становиться хотя бы OCP DBA... в следующем году. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 13:44 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
softwarerMark BarinsteinЗдесь ведь вопрос удобства программирования. У меня в db2 для строк всегда 1 вариант предиката: ... and passport_no = :passport_no И как Вы поступаете, когда в этом запросе вообще не нужен фильтр по паспорту? Передаёте null и позволяете ему вернуть пустую выборку? ;-) Код: plaintext
Преимущества: в кэше запросов такой запрос всегда один, для последующих таких же запросов не тратится время на парсинг, компиляцию - план доступа и так всегда один. Сравните с кол-вом различных комбинаций для разных значений параметров при сколько нибудь значительном кол-ве разных атрибутов. Когда таких запросиков очень много, эти накладные расходы могут становиться заметными. Моя цель - не затеять флейм, а узнать мнение людей, которые практикой занимаются. Вашу точку зрения я понял, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 13:47 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 не сможет Функциональные индексы грязно выглядят для решения такой ситуации. Но тут остаётся только развести руками. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 13:57 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Марк, вряд ли кто-либо будет спорить с преимуществом кэша запросов, равно как и с тем, что при всём богатстве выбора большинство фильтров таки идёт по типовым сценариям. То есть, имхо, накладные расходы на построение, скажем, 500 хороших планов (из которых штук 20-40 надёжно закрепятся в кэше) имхо просто несравнимы с затратами на выполнение 50'000 запросов по одному и тому же универсально-плохому плану. Возможно, я ошибаюсь, но мне смутно помнится, что "когда-то давно" у DB2 фактически отсутствовал кэш запросов, а планы просто жёстко прописывались при компиляции ХП либо всегда строились на ходу. Во всяком случае, именно на это я привык списывать повышенное (с моей точки зрения) внимание db2-шников к "статика vs динамика". Или это вызвано другими причинами? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 14:06 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Victor Metelitsapassport_no is null не сможет Ну, если это действительно нужно, никто не мешает создать user-defined индекс, к нему оператор ISNULL() и навсегда решить эту проблему. Но скорее любопытно, какие задачи приходится решать так, что при этом это действительно беспокоит? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 14:09 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Я привык мерять своей меркой. А у меня к базулькам не бывает больше 200 коннектов. Формами с фильтрами пользуются далеко не все, и не чаще, чем раз в несколько минут (на самом деле, много реже). Данные могут быть десятки миллионов строк. Так что мы могли бы себе позволить даже и литералы. А кеш запросов давно есть. Кажется, это появилось при мне, до 2000-го года, где-то около 5-й версии LUW (тогда это по другому называлось, и сразу после 2-й шла 5-я). (Понятно, что сделать prepare и помнить хендл до дисконнекта можно было и до этого). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 14:19 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
softwarer Ну, если это действительно нужно, никто не мешает создать user-defined индекс, к нему оператор ISNULL() и навсегда решить эту проблему. Но скорее любопытно, какие задачи приходится решать так, что при этом это действительно беспокоит? Ораклиные базы у нас чужой разработки, с сотнями и тысячами таблиц. Теоретически, вещи типа создания индексов я делать не могу. С другой стороны, это наши данные, и я могу делать любые запросы, какие нужно, никого не спрашивая. Какие именно запросы - заранее предположить не могу. Разработчики далеко, а ещё с ними (некоторыми) очень-очень непросто иметь дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 14:48 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
softwarerВозможно, я ошибаюсь, но мне смутно помнится, что "когда-то давно" у DB2 фактически отсутствовал кэш запросов, а планы просто жёстко прописывались при компиляции ХП либо всегда строились на ходу. Во всяком случае, именно на это я привык списывать повышенное (с моей точки зрения) внимание db2-шников к "статика vs динамика". Или это вызвано другими причинами?В v2.1 не было global dynamic statement cache, оно в v5 появилось. Но это не важно. И сейчас в db2 любят демонстрировать на туче мелких запросов преимущества static над dynamic sql - разница может достигать десятков процентов в производительности. Даже есть прикольный тул для static profiling : оно нападает на программу, использующую динамику, ловит динамические вызовы и преобразует их в статические, а потом эта же неизменённая программа начинает пользоваться статикой. И я не думаю, что всё это из-за того, что db2 не умеет нормально с кэшем динамических запросов работать. Но, конечно, чтобы эту разницу увидеть, надо нагрузку соответствующего характера иметь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 14:54 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Задача "я ничего не могу, но хочу всё-не-знаю-что" точно нерешаема, вне зависимости от null. Найдутся и другие фичи, которые Oracle возмутительно не поддерживает, хотя бы эффективный регистронезависимый поиск. Я не был в такой ситуации и определённо не хочу в ней бывать, но с практической точки зрения - если Вы создадите индексы в своей схеме и будете использовать их в своих запросах, имхо разработчики очень мало что смогут сказать Вам. Собственно, если мне не изменяет память, при соответствующе выстроенных правах они даже не получат шанса эти индексы обнаружить (если те не будут падать, конечно). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 15:00 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Запрос может пойти по неправильному плану, начать тормозить, начнут пинать разработчиков, они увидят в плане этот индекс и спросят, откуда он взялся. Но дело пойти и хуже - ведь они найдут козла отпущения для своих собственных проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 15:09 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Victor MetelitsaЗапрос может пойти по неправильному плану, начать тормозить, начнут пинать разработчиков, они увидят в плане этот индекс и спросят, откуда он взялся. Но дело пойти и хуже - ведь они найдут козла отпущения для своих собственных проблем. "Запрос" - в данном контексте это какой-нибудь из запросов разработчиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 15:12 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Прошу прощенья, что встреваю - но (если я правильно понял из предыдущих сообщений) почему, если DB2 не умеет создавать индексы по функциям - то это для DB2 очень плохо, а если Oracle не может создавать индексы по null полям - то это никому и не надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 15:32 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark BarinsteinНо, конечно, чтобы эту разницу увидеть, надо нагрузку соответствующего характера иметь. Безусловно, такую разницу нетрудно продемонстрировать на примере, но интересен вопрос степени актуальности в типичных задачах. Запрос попадает в Oracle следующим образом. Если у нас есть prepared statement, то, само собой, он замечательно используется. Если его нет, то в кэше сессии делается поиск совпадающего запроса (session cached cursors). Если там нет, в кэше запросов делается поиск плана, совпадающего по тексту запроса и контексту (текстуально одинаковые запросы могут иногда давать разные планы). Это называется soft parse. Если такой не найден, то собственно строится план - соответственно, hard parse. Разумеется, best practice сводится к избавлению от лишних parse. И если приложение написано в обычной разумной манере без наворотов, то разница между статикой и динамикой - это в общем-то разница между session cursors, в худшем случае sort parse и его отсутствием. Насколько и где эта картина отличается от DB2-шной? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 15:43 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Victor MetelitsaЗапрос может пойти по неправильному плану, начать тормозить, Не может. Он не пойдёт работать по плану с Вашим индексом до тех пор, пока в тексте запроса не будет использован Ваш оператор ISNULL. Victor Metelitsaведь они найдут козла отпущения для своих собственных проблем. Не найдут. Это лучше спросить у Oracle DBA - я всё же несколько в стороне от подобных тем - но насколько я могу сходу оценить, если не давать разработчикам ненужных прав на вашем сервере, они этот индекс нигде никогда не увидят. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 15:48 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
const64Прошу прощенья, что встреваю - но (если я правильно понял из предыдущих сообщений) почему, если DB2 не умеет создавать индексы по функциям - то это для DB2 очень плохо, а если Oracle не может создавать индексы по null полям - то это никому и не надо?да какая разница делайте выводы сами ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 15:52 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
const64Прошу прощенья, что встреваю - но почему Не надо - потому что даже Виктор, которого это вроде как бесит, на вопрос "а для чего нужно-то" отвечает "ну я не знаю, какие будут запросы, может и понадобится". А чем плохо - (пожимая плечами) - да не знаю. При наличии вычислимых полей - можно жить. Разве что я посмотрел бы, не идёт ли в результате ненужного дублирования данных. Но с другой стороны, эти поля можно, наверное, выводить в select без перевычислений. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 15:57 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
softwarerЗапрос попадает в Oracle следующим образом. Если у нас есть prepared statement, то, само собой, он замечательно используется. Если его нет, то в кэше сессии делается поиск совпадающего запроса (session cached cursors). Если там нет, в кэше запросов делается поиск плана, совпадающего по тексту запроса и контексту (текстуально одинаковые запросы могут иногда давать разные планы). Это называется soft parse. Если такой не найден, то собственно строится план - соответственно, hard parse. Разумеется, best practice сводится к избавлению от лишних parse. И если приложение написано в обычной разумной манере без наворотов, то разница между статикой и динамикой - это в общем-то разница между session cursors, в худшем случае sort parse и его отсутствием. Насколько и где эта картина отличается от DB2-шной?В динамике у db2 практически то же самое, кроме session cached cursors (по крайней мере, я не знаю аналогов). В статике у db2 в рантайме нет: - sort parse - hard parse - проверки авторизаций пользователя на все объекты (не забываем, что оракл тоже должен это делать), используемые в запросе. Проверяется только право execute на пакет, в котором хранятся все статические запросы программы. В статике в db2 план запроса строится при прекомпиляции и получает некий id, по которому он в рантайме находится в системном каталоге или кэше статических запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 16:10 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark Barinstein В статике у db2 в рантайме нет: - sort parse - hard parse - проверки авторизаций пользователя на все объекты (не забываем, что оракл тоже должен это делать), используемые в запросе. Проверяется только право execute на пакет, в котором хранятся все статические запросы программы. уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные. а тут какой план зашился с тем и жить. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 16:34 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
softwarerconst64Прошу прощенья, что встреваю - но почему Не надо - потому что даже Виктор, которого это вроде как бесит, на вопрос "а для чего нужно-то" отвечает "ну я не знаю, какие будут запросы, может и понадобится". Уже не один раз надо было, подробности уже забыл, а недоумение помню. "user-defined индекс, к нему оператор ISNULL()" - это, вообще, в какой версии? Я не помню таких штук. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 16:36 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Victor Metelitsa "user-defined индекс, к нему оператор ISNULL()" - это, вообще, в какой версии? Я не помню таких штук. в восьмерке было, древней оракла я не застал ... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 16:45 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные. а тут какой план зашился с тем и жить.Если с изменением данных план не должен меняться, то оно, может, и хорошо, что план зашился. Но если хочется, то можено и rebind пакетам делать после обновления статистики. Никто не говорит, что static всегда лучше. Просто в db2 есть дополнительная возможность, которую можно использовать, можно нет. Про cost based оптимизатор - не понял, это к чему? В db2 он таким и был с древности. Или в оракле он более костистее? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 16:55 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
const64Прошу прощенья, что встреваю - но (если я правильно понял из предыдущих сообщений) почему, если DB2 не умеет создавать индексы по функциям - то это для DB2 очень плохо, а если Oracle не может создавать индексы по null полям - то это никому и не надо?Опупенная логика. А знак вопрос - это по ошибке, да? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 17:01 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark Barinstein Про cost based оптимизатор - не понял, это к чему? В db2 он таким и был с древности. Или в оракле он более костистее? :) если план не меняется в зависимости от собраной статистики имхо это скорее rule-based, но это мое имхо. кстати, то что в дб2 оптимизатор кост с древности распростроненное заблуждение. реально у оракла он появился раньше (есть пруф), а произошло это только в семерке, т.е. не так уж и давно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 17:05 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!Victor Metelitsa "user-defined индекс, к нему оператор ISNULL()" - это, вообще, в какой версии? Я не помню таких штук. в восьмерке было, древней оракла я не застал ... А можно примерчик? Может, я это под другим названием знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 17:08 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!Mark Barinstein Про cost based оптимизатор - не понял, это к чему? В db2 он таким и был с древности. Или в оракле он более костистее? :) если план не меняется в зависимости от собраной статистики имхо это скорее rule-based, но это мое имхо. кстати, то что в дб2 оптимизатор кост с древности распростроненное заблуждение. реально у оракла он появился раньше (есть пруф), а произошло это только в семерке, т.е. не так уж и давно. В DB2 2.1 for OS/2 cost-based оптимизатор был, rule-based оптимизатора не было, хинтов не было. Oracle 7 примерно этих же лет, что из них раньше - не помню, но народ изо всех сил старался держаться от их "cost-based" оптимизатора подальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 17:12 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Потом появился Oracle 8 и радостные статьи - ура, теперь cost-based-оптимизатором можно пользоваться. Недолго радовались, как я понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 17:15 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!кстати, то что в дб2 оптимизатор кост с древности распростроненное заблуждение. реально у оракла он появился раньше (есть пруф), а произошло это только в семерке, т.е. не так уж и давно.В моём пруфе оно появилось в 1983 (это если дедушку System R не считать): The Big Picture: IBM DB2 Information Management Software and DB2 Universal Database . Было бы интересно посмотреть на опровержение этого заблуждения. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 17:21 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark Barinsteinкроме session cached cursors (по крайней мере, я не знаю аналогов) Это по сути подтяжки для разработчиков, слишком ленивых, чтобы прочитать про prepared statements. Mark Barinsteinпроверки авторизаций пользователя на все объекты (не забываем, что оракл тоже должен это делать) Оракл делает это при hard parse и немного при soft parse (собственно, это и занимает основное время soft parse, насколько я понимаю). Ну то есть, собственно, как я и предполагал, вопрос сводится к сопоставлению prepared statement и динамики с вероятным soft parse и редким hard parse. Конечно, когда можно сработать "без потерь", статика лучше. Но, полагаю, не будет неправильным сказать, что статика хороша тогда и только тогда, когда в ней зашита обязательная сильная фильтрация, а переменная часть непринципиальна. В типичном случае даже простого фильтра - десяток условий, ни одно из которых не является обязательным - статика будет несравнимо больше проигрывать на этапе выполнения (cобственно, Oracle даже в этом случае пытается подстраивать планы под разные значения переменных, хотя до идеала тут ещё очень и очень далеко). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 17:29 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные. а тут какой план зашился с тем и жить.Видимо, пережевывали недостаточно. При работе со статикой есть простое правило - после сбора статистики надо пересоздать планы статики (rebind). Достоинство в том, что эту операцию можно делать по необходимости, например в периоды низкой нагрузки. А если сбора статистики небыло, то и динамика со старой статистикой не будет новые планы генерячить, ибо не с чего. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 17:37 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
softwarerНо, полагаю, не будет неправильным сказать, что статика хороша тогда и только тогда, когда в ней зашита обязательная сильная фильтрация, а переменная часть непринципиальна. В типичном случае даже простого фильтра - десяток условий, ни одно из которых не является обязательным - статика будет несравнимо больше проигрывать на этапе выполнения (cобственно, Oracle даже в этом случае пытается подстраивать планы под разные значения переменных, хотя до идеала тут ещё очень и очень далеко).Ну, в том примере, который я приводил, плпн доступа всегда одинаков - доступ по индексу gid. В общем, применение статике можно найти, и часто она действительно не подходит или не удобна в применении. В db2 есть, типа, бест практисиз для этого: Determining when to execute SQL statements statically or dynamically in embedded SQL applications ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 17:46 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark BarinsteinВ моём пруфе оно появилось в 1983 (это если дедушку System R не считать): The Big Picture: IBM DB2 Information Management Software and DB2 Universal Database . Было бы интересно посмотреть на опровержение этого заблуждения. не вижу, можно точную цитатку какую именно фразу вы приняли за "появилось" ? разбор ситуации по оптимизаторам лежит тут // http://www.dbmsmag.com/9703d15.html похоже загнулся журнальчик. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 18:03 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
нашел в архиве dbsmag Over the last few years, especially as the market trend for data warehousing has really caught on, database vendors have put a great deal of focus on optimizer development. Oracle introduced its cost-based optimizer in Oracle 7.0 and is phasing out the use of rule-based optimization in its product. Gary Hallmark, consulting member of technical staff who focuses primarily on data warehouse issues at Oracle, sees the cost-based optimizer as a key component of Oracle's data warehouse solution with specific features that allow for exploitation of star schema designs, bitmapped indices, and parallel-processing capabilities available with the Oracle Parallel Query option. Hallmark emphasizes the importance of a number of optimization improvements introduced with Oracle 7.3, including "parallel aware'' optimization strategies that enable the optimizer to use parallelism in its execution plans to trade system throughput for better response times on individual queries. Oracle 7.3 also introduced histogrammed statistics for use by the optimizer for better plan generation when skewed data is present within large database tables. The quality of plans generated by Oracle's cost-based optimizer have increased dramatically between Oracle 7.0 and the current 7.3 version of the product, and even further enhancements are expected with the release of Oracle8 later this year. IBM expects to integrate its advanced research in cost optimization strategies coming out of the Starburst project (undertaken in IBM's Almaden research laboratories in California) into both the MVS and Unix implementations of the DB2 database product. Gilles Fecteau, architect of DB2/6000 Parallel Edition, indicates that customers for this high-end database focused on DSS workloads should see the benefits of the Starburst research in the Common Server implementation of DB2 as early as the first half of 1997. Because the research prototype for IBM's optimizer technology was developed in C++, it will be a much faster path for integrating the advancements into DB2's Common Server database engine (which is also implemented in C++) than will be the case for DB2 on MVS (which is implemented in assembler and PL/X-390). // http://web.archive.org/web/20071009200716/http://www.dbmsmag.com/9703d15.html это 1997 год, т.е. os/2 где в это время и подохла ... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 18:10 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!Mark BarinsteinВ моём пруфе оно появилось в 1983 (это если дедушку System R не считать): The Big Picture: IBM DB2 Information Management Software and DB2 Universal Database . Было бы интересно посмотреть на опровержение этого заблуждения. не вижу, можно точную цитатку какую именно фразу вы приняли за "появилось" ? разбор ситуации по оптимизаторам лежит тут // http://www.dbmsmag.com/9703d15.html похоже загнулся журнальчик. A brief history of DB2 A series of research projects have been a steady source of technology for the DB2 family since the beginning : ... * Cost-based query optimization has been an area of intense effort and innovation ever since the System R days . The R Star project extended the relational model to distributed system environments. ...Смысл следующий: Cost-based optimizer, появившийся в System R , стал источником технологий для DB2 с самого её начала . Как ещё по-другому можно интерпретировать эти фразы? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 18:21 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
dbmag IBM expects to integrate its advanced research in cost optimization strategies coming out of the Starburst project (undertaken in IBM's Almaden research laboratories in California) into both the MVS and Unix implementations of the DB2 database product.Здесь нигде не сказано, что было у db2 rule-based, и после внедрения advanced research оно стало cost-based. Дословно: " Ожидается, что IBM интегриует своё передовое исследование в cost optimization strategies ". Как из этого можно было заключить, что было rule-based, а ожидается cost-based? Вот ещё самоуверенные заявления ibm (там в т.ч. и про cost-based есть) DB2 Leadership in Business Intelligence Там заявляется напрямую: IBMWe invented cost-based optimization for database management systems. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 18:48 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Очень интересно повспоминать, когда появился cost-based оптимизатор, но это жить воспоминаниями о прошлом. А как сейчас? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 19:17 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!Mark Barinstein В статике у db2 в рантайме нет: - sort parse - hard parse - проверки авторизаций пользователя на все объекты (не забываем, что оракл тоже должен это делать), используемые в запросе. Проверяется только право execute на пакет, в котором хранятся все статические запросы программы. уже пережевывали. технология 80х, сегодня в моде cost based оптимизаторы которые с ростом данных подстраивают план под изменяющиеся данные . а тут какой план зашился с тем и жить. В теории... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 19:41 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
пгуые123Очень интересно повспоминать, когда появился cost-based оптимизатор, но это жить воспоминаниями о прошлом. А как сейчас? Да, я тут некий примерчик просил, потому что перерываю ораклячью SQL reference и не понимаю, о чём шла речь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 20:02 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Mark BarinsteinКак ещё по-другому можно интерпретировать эти фразы? ну например так: нароботки использовались в проекте Starburst project, который в db2 пришли только в 1997 но я нашел описание состояния оптимизатора в 1993, да там уже cost-based Query Optimization in the IBM DB2 Family http://sites.computer.org/debull/93DEC-CD.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 20:43 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 21:02 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Вот это: softwarerVictor Metelitsapassport_no is null не сможет Ну, если это действительно нужно, никто не мешает создать user-defined индекс, к нему оператор ISNULL() и навсегда решить эту проблему. Но скорее любопытно, какие задачи приходится решать так, что при этом это действительно беспокоит? т.е. существует какой-то user-defined index, не привычный и не функциональный. и оператор ISNULL() ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 21:17 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 21:35 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Victor Metelitsaт.е. существует какой-то user-defined index, не привычный и не функциональный. и оператор ISNULL() http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/ap_examples001.htm#SQLRF55547 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 22:23 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Спасибо. Вот, нашлась ещё одна вещь, про которую я предпочёл бы не знать ;-) но, видно, придётся ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2010, 23:35 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Интересная штука; наверное, даже буду пользоваться. Правда, в DB2 нечто подобное тоже есть, но она меня не заставляла этим интересоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2010, 18:17 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
вышла бетта Oracle Database 11.2 Express Edition http://www.oracle.com/technetwork/database/express-edition/11gxe-beta-download-302519.html лимит 11гб датафайлы, 1 cpu, 1 гб ram прогресс на лицо ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2011, 17:56 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Если это бета, значит в нём подразумеваются баги. А в какую дырку у него совать багрепы? Уж не в форум ли, где в первом же топике неоценимый совет "It is recommended to disable anti-virus software before installing Oracle on Windows"?.. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2011, 21:25 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЕсли это бета, значит в нём подразумеваются баги. А в какую дырку у него совать багрепы? Уж не в форум ли, где в первом же топике неоценимый совет "It is recommended to disable anti-virus software before installing Oracle on Windows"?.. а ты на полном серьезе не по понимаешь почему ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2011, 21:43 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Да нет, я всё понимаю... Оракулу же надо защищать свою интеллектуальную собственность... Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2011, 22:15 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovДа нет, я всё понимаю... Оракулу же надо защищать свою интеллектуальную собственность... в данном случае дело совершенно не в оракле ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2011, 22:32 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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 обогнали теперь. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2011, 22:51 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
вчера покрутил, глючков не нашел, но похоже это еще глупокая бетта. в ЕМ не нашел администрилки, все управление базой предлагается через гуйню sql developer делать, ну или командами sqlplus. зато гляжу процессор это именно сокет. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 13:06 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!зато гляжу процессор это именно сокет.Т.е. может использовать два и более ядер одного проца? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 13:47 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
miksoftТ.е. может использовать два и более ядер одного проца? да, во всяком случае у себя вижу такую картинку Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 14:13 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 15:17 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Как все сложно... Oraclе не пишет что-нибудь на подобии такого в лог: Код: plaintext 1.
Yo.!лимит 11гб датафайлы Из скольки датафайлов может состоять "одна бд"? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 15:26 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
pkarklinКак все сложно... Oraclе не пишет что-нибудь на подобии такого в лог: Код: plaintext 1.
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 15:45 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
pkarklinИз скольки датафайлов может состоять "одна бд"? 65535 на сколько я помню. в 10g было сделано так, реально лимит ~5.2гб но с таблеспейсом систем. т.е. расчет что систем не выростит выше 1.2 и юзерскому гарантированно достанется 4гб. реально у меня 4.1 гб получилась помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 15:51 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!, Может там реализован наружний лимитатор, который специально занимает проц пустыми циклами при одновременной нагрузке :). Интересовало влияние количества потоков на внутренний замер через dbms_output(timestamp), то есть прикладная многопроцессорность. По идее должно быть типа: 1 поток - 10 секунд 2 потока - 10 секунд каждый 3 потока - 16 секунд каждый 4 потока - 21 секунд каждый ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 15:57 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
Yo.!65535 на сколько я помню. в 10g было сделано так, реально лимит ~5.2гб но с таблеспейсом систем. т.е. расчет что систем не выростит выше 1.2 и юзерскому гарантированно достанется 4гб. реально у меня 4.1 гб получилась помню. Я Express редакцию имел ввиду. Например, MS SQL 2008 R2 Express Edition имея ограничение на размер бд в 10 гигабайт, может "нести на борту" 32 768 баз. При этом размер хранилища FILESTREAM не входит в эти 10 гиг. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 16:10 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
pkarklin, По лицензии - Оракл XE 11gR2 всего 11ГБ на пользовательские данные, не включая внешние (bfile, external table) на один сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 16:14 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
-2-, Понятно. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 16:17 |
|
Oracle XE: a five years of no progress
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 16:30 |
|
|
start [/forum/topic.php?all=1&fid=35&tid=1552703]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
223ms |
get tp. blocked users: |
1ms |
others: | 235ms |
total: | 529ms |
0 / 0 |