|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Руководство решило переходить с оракла на постгрес для решения проблем производительности. Кто что думает по этому поводу? Мое мнение, что если умудрились повесить оракл, то простая миграция на постгрес с переносом всей логики лоб в лоб ситуацию не спасет, а может сделать еще хуже. При этом будут потрачены тысячи человеко-часов. Основной упор идет на то, что кривой оптимизатор запарывает всю производительность, приходится использовать кучи хинтов в запросах, а на постгресе этой проблемы быть не должно из-за более умного оптимизатора. Объем бд около 3 Гб, самая большая таблица 500 000 записей, но возможен призрачный рост в далеком будущем до миллиона. Ну и если у кого был опыт такой миграции, с какими подводными камнями можно столкнуться, чтобы заранее подготовиться и сделать все минимальными ресурсами? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 19:00 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Опечатался. Конечно 3 Тб, а не Гб ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 19:01 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
daunito, дурачки. у оракла объективно лучший оптимизатор в индустрии. у постгреса даже честного партишенинга нет, не говоря уже о прочих фишках самого оптимизатора. на сколько я понимаю постгрес до сих пор при фуллскане долбит базу одноблочным чтением, т.е. у него даже на примитивных запросах шансы сравняться с ораклом только на ssd. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 21:37 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
daunitoРуководство решило переходить с оракла на постгрес для решения проблем производительности.бу-го-га... даже сами постгрессщики признают, что до оракла в производительности им далеко, зато дешевле :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 22:04 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Для себя судя по тестам я определил. ПГ вдвое медленнее ОРА. По замороченности - сравнимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 22:11 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Siemargl, лада веста в 4 раза медленне феррари ф-1, и чо? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 22:15 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Relic HunterSiemargl, лада веста в 4 раза медленне феррари ф-1, и чо? Зато в весту больше влезет ) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 22:17 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Вообще меня всегда поражало, как такие решения принимаются - ведь проще взять и посчитать, что аудит и тюнинг производительности значительно дешевле и быстрее, чем такие глобальные миграции/апгрейды и тд... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 22:41 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
xtenderаудит и тюнинг производительности значительно дешевле и быстрее, чем такие глобальные миграции/апгрейды Но это ведь ТСа придётся уволить и заменить кем-нибудь с лучшей подготовкой. А вдруг он племянник гендира?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 23:05 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ну не знаю... на каждую контору хороших спецов ДБА не напасешься, и высокая квалификация нужна на самом деле редко. Проще и дешевле раз в полгода-год заказывать аудит с тюнингом на 3-7 дней, хотя бы у тех же ФОРСов и РДТЕХов. А в идеале был бы как на западе - заключать такие контракты с независимыми контрактниками - они хоть стараться на каждый чих впаривать более дорогие серваки не будут. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 23:10 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
xtender, Да заказывали специолистов=) Пришли, сказали используйте бинды в запросах, иначе никак. Для этого нужно было переписать все приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 23:26 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Relic Hunterxtender, Да заказывали специолистов=) Пришли, сказали используйте бинды в запросах, иначе никак. Для этого нужно было переписать все приложение. Странно. Для нормальной работы нужно правильно написать все приложение. Вотонокак ?! O_o ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 23:31 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
daunitoРуководство решило переходить с оракла на постгрес для решения проблем производительности. ... Сразу видно, что вам удалось найти по настоящему высоквалифицированных менеджеров. Надеюсь на этом они не остановится, и найдут еще много успешных, хотя и радикальных решений. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 23:31 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
SiemarglСтранно. Для нормальной работы нужно правильно написать все приложение. Вотонокак ?! O_oПриложение было написано давно и до нас. Переписывать его никто не собирался. Чем в таком случае помогут ассы по тюнингу? Оказалось, что ничем. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 23:43 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
А вот парсер и оптимизатор тормознутый в Оракле это - факт. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2016, 23:46 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Причина происходящего, вероятно, в том, что руководство не видит оракловых спецов, с кем можно работать по оптимизации и решению прочих проблем, а спец по постгресу, наверное, есть на примете. Нет? Подводных камней масса: 1. Невозможность коммитить транзакции в процедурах. Может, коммит в процедурах - это и плохой тон, но если это есть, то переделка ляжет на плечи клиентской части 2. pgsql достаточно демократичен по поводу использования левописных структур и типов данных. Чего будет стоить перенос оных в оракл, если таковые присутствуют... взять, к примеру, древовидный тип ltree, в котором многие любят хранить, скажем, адреса 3. вменяемого аналога оракловому партиционированию нет. Есть жуткий суррогат. 4. веселая отладка. Решение проблем с производительностью - это гребаная черная магия. Толковых инструментов для анализа нет, нет ничего похожего на механизм oracle events. Последний раз, когда сидел на 9.1, видел какую-то тулзу для юниксов, которая может выдавать хоть что-то, пригодное для анализа чтений, дисковой нагрузки, но по полноте дебажных данных сравнивать с ораклом нельзя. Для постгреса под виндой такой тулзы нет. Механизм решения проблем следующий: в голове программиста сидят 20 шаблонов, как делать хорошо и как не делать плохо. Он просто перебирает эти шаблоны и смотрит, какой подходит к его ситуации. Инструментария нет. 5. Если каким-то образом ваш проект на оракле завязан на изменения в ddl по ходу пьесы, то в постгресе вас ждет большой сюрприз - ddl там транзакционен, т.е. может откатываться. С блокировками, соответственно, ситуация обстоит по-другому. Если вернусь с совещания в течение часа, допишу пункты 6 и 7 про оптимизатор. В целом, postgres - классная СУБД для своего сегмента. На мой взгляд, если не оракл, то Postgres. Просто человеку, вырасшему на оракле, тяжело будет спускаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 01:51 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
daunitoРуководство решило переходить с оракла на постгрес для решения проблем производительности. Кто что думает по этому поводу? Идиотизм. Postgres замечательная СУБД, но она не лучше (и не хуже) Oracle. Они примерно одинаково мощные. daunitoМое мнение, что если умудрились повесить оракл, то простая миграция на постгрес с переносом всей логики лоб в лоб ситуацию не спасет, а может сделать еще хуже. Согласен на 100%. Будет только хуже, просто потому, что вы PG ещё не умеете "готовить", а к Oracle почти наверняка уже хотя-бы как-то приспособились. daunitoПри этом будут потрачены тысячи человеко-часов. Основной упор идет на то, что кривой оптимизатор запарывает всю производительность, приходится использовать кучи хинтов в запросах, а на постгресе этой проблемы быть не должно из-за более умного оптимизатора. В PG нет более умного оптимизатора. В Oracle оптимизатор очень хороший. Если кто-то его ругает, то скорее всего он сам не очень компетентен... daunitoОбъем бд около 3 Гб, самая большая таблица 500 000 записей, но возможен призрачный рост в далеком будущем до миллиона. Это мало. daunitoНу и если у кого был опыт такой миграции, с какими подводными камнями можно столкнуться, чтобы заранее подготовиться и сделать все минимальными ресурсами? Опыт миграции есть у многих, но тут главное -- зачем всё это ? Я бы понимал, если нужно было бы деньги экономить, но ведь наверное Oracle уже закуплен... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 02:30 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
MasterZivОни примерно одинаково мощные. серьезно? мне кажется, они несколько в параллельных плоскостях находятся. И чтобы PostgreSQL приравнять к Oracle, это Постгрес надо сильно переоценить. Или поверить в маркетинг. Конечно, пересечение по применению у них есть, но не стопроцентное же. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 02:44 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
kdv, Oralce SE мало чем от Postgresql отличается. Нет секционирования, параллелизма, нормальной диагностики, даже того-же Enterprise Manager. A энтерпрайз с перечисленными фичами будет стоить за сотню уе. Фишка делеко не всем доступная. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 03:01 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Relic Hunterxtender, Да заказывали специолистов=) Пришли, сказали используйте бинды в запросах, иначе никак. Для этого нужно было переписать все приложение.а в чем конкретно проблема была? чьи спецы были? Relic Hunterkdv, Oralce SE мало чем от Postgresql отличается. Нет секционирования, параллелизма, нормальной диагностики, даже того-же Enterprise Manager. A энтерпрайз с перечисленными фичами будет стоить за сотню уе. Фишка делеко не всем доступная.так никто и не говорит что оракл дешевый... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 03:39 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Relic HunterА вот парсер и оптимизатор тормознутый в Оракле это - факт.это из разряда "Лучше день потерять, потом за пять минут долететь" лучше потратить пару микросекунд на хорошую оптимизацию и получить время выполнения в 10с, чем ничего не толком не оптимизировать и выполнять час ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 03:45 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
xtenderRelic HunterА вот парсер и оптимизатор тормознутый в Оракле это - факт.это из разряда "Лучше день потерять, потом за пять минут долететь" лучше потратить пару микросекунд на хорошую оптимизацию и получить время выполнения в 10с, чем ничего не толком не оптимизировать и выполнять час ну не скажи, во всяких там реал тайм, телекомах это будет решающих фактор. они не будут ждать если оно не в кеше. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 04:41 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Relic Hunterxtenderпропущено... это из разряда "Лучше день потерять, потом за пять минут долететь" лучше потратить пару микросекунд на хорошую оптимизацию и получить время выполнения в 10с, чем ничего не толком не оптимизировать и выполнять час ну не скажи, во всяких там реал тайм, телекомах это будет решающих фактор. они не будут ждать если оно не в кеше.Если это OLTP, то там используются bind. т.е. полный парсинг исчезающе редкая операция. Если bind не используются, то разработчика на кол. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 08:31 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
daunitoРуководство решило переходить с оракла на постгрес для решения проблем производительности. Кто что думает по этому поводу? Мое мнение, что если умудрились повесить оракл, то простая миграция на постгрес с переносом всей логики лоб в лоб ситуацию не спасет, а может сделать еще хуже. При этом будут потрачены тысячи человеко-часов. Основной упор идет на то, что кривой оптимизатор запарывает всю производительность, приходится использовать кучи хинтов в запросах, а на постгресе этой проблемы быть не должно из-за более умного оптимизатора. Объем бд около 3 Гб, самая большая таблица 500 000 записей, но возможен призрачный рост в далеком будущем до миллиона. Ну и если у кого был опыт такой миграции, с какими подводными камнями можно столкнуться, чтобы заранее подготовиться и сделать все минимальными ресурсами? Вы правильно думаете... Но есть вероятность, что производительность поднять получится. Только если не делать перенос "лоб в лоб". А разделив данные и логику их обработки. Данные хранятся в PG, работа с данными пишется на другом ЯП. Т.е. полный рефакторинг, под видом миграции. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 11:01 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Alexander RyndinRelic Hunterпропущено... ну не скажи, во всяких там реал тайм, телекомах это будет решающих фактор. они не будут ждать если оно не в кеше.Если это OLTP, то там используются bind. т.е. полный парсинг исчезающе редкая операция. Если bind не используются, то разработчика на кол. почитай чтоли - как раз бинд и не используется из-за приложения. А переписывать его лень. Уха-хахаха ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 11:14 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
mad_nazgul, поднять производительность наверняка можно если перепроектировать приложение и в ора. Не вижу смысла в переходе по крайне мере по причине указанной ТСом ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 11:35 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovxtenderаудит и тюнинг производительности значительно дешевле и быстрее, чем такие глобальные миграции/апгрейды Но это ведь ТСа придётся уволить и заменить кем-нибудь с лучшей подготовкой. А вдруг он племянник гендира?.. Отнюдь. Меня привлекли для решения проблемы, я в той компании не работаю. Руководство изложило свои мысли и планы. Я хочу попробовать продавить их на тюнинг существующей базы, анализ производительности, частичный рефакторинг. Деньги не решающая роль при миграции, они искренне надеются увеличить производительность, но если при этом получится сэкономить все только будут рады. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 11:51 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
vadiminfoСразу видно, что вам удалось найти по настоящему высоквалифицированных менеджеров. Надеюсь на этом они не остановится, и найдут еще много успешных, хотя и радикальных решений. Ну по крайней мере они вполне открыты для диалога и действительно хотят сделать лучше, а не просто распилить бабло. Поэтому есть надежда, что получится отговорить от этих мыслей и попробовать привести в порядок существующую базу ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 11:54 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Ivan Durakпочитай чтоли - как раз бинд и не используется из-за приложения. А переписывать его лень. Уха-хахаха не увидел где это написано... а cursor sharing=force попробовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 11:58 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
daunitoОтнюдь. Меня привлекли для решения проблемы и что показал анализ то? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 12:01 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Несколько мыслей. daunitoРуководство решило переходить с оракла на постгрес для решения проблем производительности. Кто что думает по этому поводу? Мое мнение, что если умудрились повесить оракл, то простая миграция на постгрес с переносом всей логики лоб в лоб ситуацию не спасет, а может сделать еще хуже. Совершенно нет никаких оснований говорить что переход на Postgres даст какие-то преимущества. PG не постулирует никаких явных выгод для реляционок по сравнению с Oracle. Скорее наоборот. Oracle начиная с 11g вводит целый ряд очень умных фоновых оптимизаторов которые трекают планы на основе AWR. Возможно проблема-то лежит вовсе не в оракле а в бизнес-логике на PL/SQL. Она где-то избыточна. И требует усилий по рефакторингу. И опять-же тут PG не тот помошник. Его язык хранимок более бедный. Возможно проблема в неверно выбраном партишионинге. И опять-же PG здесь не торт. Его возможности партицирования слабее чем Oracle. Возможно руководство банально хочет сэкономить на лицензиях. Но вот опытный чел поделился со мной мыслью что в энтерпрайзе TCO в PG может быть даже наоборот и дороже. Оракл очень быстро правит мелкие дефекты в ядре а дождаться этого от PG иногда невозможно. Обычно ищется опытный сишник, сами правят ядро PG и в результате и риски и гимора еще больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 12:45 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Relic Hunterkdv, Oralce SE мало чем от Postgresql отличается. Нет секционирования, параллелизма, нормальной диагностики, даже того-же Enterprise Manager. A энтерпрайз с перечисленными фичами будет стоить за сотню уе. Фишка делеко не всем доступная. для школьника может быть так и выгглядит, но вот для прогрмаммера с двумя годами опыта там уже пропасть. оптимизитор оракла в SE редакции сотни метрик учитывает при постройке планов. планы эти умеет кешировать. постгрес в лучшем случае кол-во строк учтет при выборе плана, единого кеша запросов нет, многоблочного чтения нет. у постгресса неудачная структура датафайлов - версии строк прямо в датафайлах хранятся, любой фуллскан читай не только то что нужно но и чужие версии, нафиг не нужные. ненужные версии нужно из датафайлов вычищать, чудовищно дорогая операция. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 13:53 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Yo.!оптимизитор оракла в SE редакции сотни метрик учитывает при постройке планов Так чего ж он так на IS NULL лажается ?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 14:01 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovТак чего ж он так на IS NULL лажается ?.. лажаются интербейз-гайз, проецирующие свое примитивное представления на энтерпрайз субд. оракл не хранит нулы в индексе, это реально глупо и невероятно дорого. если необходимо искать по нулл, орал предлагает делать function based index. видно, что ТС слышал звон на эту тему, но не понял откуда он. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 14:07 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Yo.!оракл не хранит нулы в индексе, это реально глупо и невероятно дорого Э? Что там, собственно, дорогого-то? Просто ещё одна нода. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 14:22 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЭ? Что там, собственно, дорогого-то? Просто ещё одна нода. ну и нахрена мне она в 99.99% задач ? нахрена мне хранить индекс на пустоту в моих терабайтных таблицах ? это дорого. если действительно нужен посик по нулл, всегда можно применить FBI индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 14:33 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovYo.!оракл не хранит нулы в индексе, это реально глупо и невероятно дорого Э? Что там, собственно, дорогого-то? Просто ещё одна нода. Дмитрий. На самом деле это очень разумно. Oracle также не различает NULL и пустые строки. Это отдельная история но думаю что все эти trick были плодом многолетнего осмысления самой специфики строительства БД и основывались не только на реляционной алгебре но и еще на свойствах хранения. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 14:40 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonОракл очень быстро правит мелкие дефекты в ядре а дождаться этого от PG иногда невозможно. Обычно ищется опытный сишник, сами правят ядро PG и в результате и риски и гимора еще больше. Людям интересно, когда важный для них дефект исправят, а не когда исправят многие. В PG есть способ гарантированно получить исправление -- взять и исправить. В Оракле такого способа нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 14:44 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonвсе эти trick были плодом многолетнего осмысления ага. все эти исторические коряги не имеют под собой никакого "многолетнего осмысления". Просто было сделано "вот так", потому что стандарта не было, и каждый лепил кто во что горазд. А с появлением стандарта ориентировались не на новых, а на старых пользователей. Собственно, я имею в виду любой достаточно взрослый SQL-сервер, который существует лет 20-30. К примеру, у InterBase и Firebird до сих пор на уровне DDL размер сегмента блоба по умолчанию равен 80 байт (т.е. длина экрана терминала), хотя этот размер сегмента в DDL уже давно никому нахрен не нужен, а в API все драйверы и компоненты сами используют сегмент в 16к. И вообще, оно надо было для древнего препроцессора embedded sql, которым уже почти никто не пользуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 14:49 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Yo.!ну и нахрена мне она в 99.99% задач ? нахрена мне хранить индекс на пустоту в моих терабайтных таблицах ? это дорого. То есть нода со ключом, например, "1", не использующаяся в 99,99% задач, таки там хранится, пусть это и дорого. А нода с "NULL" - уже не влезает. Ню-ню... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 14:56 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Bubba KushmaytonОракл очень быстро правит мелкие дефекты в ядре а дождаться этого от PG иногда невозможно. Обычно ищется опытный сишник, сами правят ядро PG и в результате и риски и гимора еще больше. Людям интересно, когда важный для них дефект исправят, а не когда исправят многие. В PG есть способ гарантированно получить исправление -- взять и исправить. В Оракле такого способа нет. Не согласен. И продуктовые и аутсорсинговые компании являются "пользователями" ПО которое используют. Я надеюсь у вас не возникает желания фиксить дефекты в операционке, в драйверах. Вы - концентрируетесь на своём продукте который создаёте. А все риски вкладываете либо в оплату лицензии либо решаете эти риски своими силами. И выбор Oracle <=> PG это не выбор между чёрным и белым или между добром и злом. Это выбор между двух подходов к оценке рисков. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 15:00 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonBubba Kushпропущено... Людям интересно, когда важный для них дефект исправят, а не когда исправят многие. В PG есть способ гарантированно получить исправление -- взять и исправить. В Оракле такого способа нет. Не согласен. И продуктовые и аутсорсинговые компании являются "пользователями" ПО которое используют. Я надеюсь у вас не возникает желания фиксить дефекты в операционке, в драйверах. Вы - концентрируетесь на своём продукте который создаёте. А все риски вкладываете либо в оплату лицензии либо решаете эти риски своими силами. И выбор Oracle <=> PG это не выбор между чёрным и белым или между добром и злом. Это выбор между двух подходов к оценке рисков. Вы платите за лицензию, а риски остаются с вами. К примеру, в OLAP OPTION длина столбцов в UTF-8 определяется неверно. При доступе к исходникам пофиксить пару дней, а при использовании Oracle придется костыли использовать. Стыдно просто перед заказчиком должно быть ставить то, что вы не можете исправить и что не контролируете. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 15:31 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Собственно, один проход в отладчике, замена функции определения длины на многобайтную и компиляция. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 15:33 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Bubba KushК примеру, в OLAP OPTION длина столбцов в UTF-8 определяется неверно. При доступе к исходникам пофиксить пару дней, а при использовании Oracle придется костыли использовать. А что на эту проблему говорит Oracle Support? Неужели "Оракл очень быстро правит мелкие дефекты в ядре" - сплошное враньё?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 15:37 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Bubba KushВы платите за лицензию, а риски остаются с вами. К примеру, в OLAP OPTION длина столбцов в UTF-8 определяется неверно. При доступе к исходникам пофиксить пару дней, а при использовании Oracle придется костыли использовать. Стыдно просто перед заказчиком должно быть ставить то, что вы не можете исправить и что не контролируете. Я вас приглашаю в подфорум http://www.sql.ru/forum/oracle вместе с зарегистрированным дефектом на металинке. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 15:45 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovYo.!ну и нахрена мне она в 99.99% задач ? нахрена мне хранить индекс на пустоту в моих терабайтных таблицах ? это дорого. То есть нода со ключом, например, "1", не использующаяся в 99,99% задач, таки там хранится, пусть это и дорого. А нода с "NULL" - уже не влезает. Ню-ню... ты можешь сделать fbi с функцией типа если поле = адын то null, если не адын то поле, и это не будет храниться. Профит от не хранения наллов на лицо) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 17:24 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Yo.!daunito, дурачки. у оракла объективно лучший оптимизатор в индустрии. у постгреса даже честного партишенинга нет, не говоря уже о прочих фишках самого оптимизатора. на сколько я понимаю постгрес до сих пор при фуллскане долбит базу одноблочным чтением, т.е. у него даже на примитивных запросах шансы сравняться с ораклом только на ssd. Нет , постгрес использует упреждающее чтение файловой системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 17:44 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
тролил ЧАЛа, упреждающее чтение <> многоблочное чтение ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 17:55 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
тролил ЧАЛаНет , постгрес использует упреждающее чтение файловой системы. но делает это глупыми одноблочным долбижем. взрослые субд, оракл, мсскл используют ReadFileScatter() из windows api и читают разом в плоть до 128 блоков. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 17:59 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Yo.!но делает это глупыми одноблочным долбижем. взрослые субд, оракл, мсскл используют ReadFileScatter() из windows api и читают разом в плоть до 128 блоков. Что в случае SSD - деньги на ветер. А при наличии кеша ФС и переопределения порядка операций, даже у обычного винта вообще не сильно различается, что уж говорить про большой контроллер. Да Oracle велик. Но и у него есть свои слабости. Это и УРА мы, наконец, сделали строки 32Kb!!!! Наш индекс не хранит NULL! Блин при этом тыкают это как преимущество перед СУБД, которая может хранить индекс хоть для значений от одного до пяти, и больше девяти, а все остальные нет. Уж работу с массивами описать и того тяжелее. Даже в родной для Oracle java надо явно использовать встроенный тип характерный только для Oracle, а стандартный тип будет генерировать ошибку. Про умный оптимизатор стоит почитать инструкцию по смене версии Oracle - или сказ о том как план гвоздями приколачивать. Хотя Oracle реально более тяговитый грузовик и сопровождать его легче, хотя и дороже. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 18:16 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Ребят не обижайтесь но вы в Оракле полные профаны. Энтерпрайзовые ораклы стоят поверх ASM а это решение работает минуя ReadFileScatter() и тем более Windows. По поводу SSD(flash based devices). Оракл умеет работать с ними по "другому" и для "других" целей. Детальнее обзор можно почитать тут: http://www.oracle.com/technetwork/articles/systems-hardware-architecture/oracle-db-smart-flash-cache-175588.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 18:44 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Сергей АрсеньевХотя Oracle реально более тяговитый грузовик и сопровождать его легче, хотя и дороже. Ога , мощьно тягает через дисковый ввод вывод темп то, что у других спокойно помещается в оперативной памяти. _PGA_MAX_SIZE _SMM_PX_MAX_SIZE _SMM_MAX_SIZE ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 19:06 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Сергей АрсеньевЧто в случае SSD - деньги на ветер. А при наличии кеша ФС и переопределения порядка операций, даже у обычного винта вообще не сильно различается, что уж говорить про большой контроллер. Да Oracle велик. Но и у него есть свои слабости. Это и УРА мы, наконец, сделали строки 32Kb!!!! эх Сережа, именно эти архитектурные "слабости" и делают оракл #1. оракл ставят в банк, а постгрес с его строками в банк не поставят, потому что оракл с его строками вытянет нагрузку любого банка, а постгрес фиг. если ораклу нужно хранить строковые сочинения - есть CLOB, который от варчара не отличить. полагаться на кеш ФС могут аутсайдеры, с примитивным оптимизатором. а вот оракловый оптимизатор учитывает сотни параметров, в том числе кол-во блоков таблицы в кеше. и никакой SSD долбеж одноблочным чтением не выправит, лишь несколько сократит отставание. даже на SSD один IOPs на 128 блоков будет в разы быстрее 128 IOPs по одному блоку. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 20:15 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonРебят не обижайтесь но вы в Оракле полные профаны. Энтерпрайзовые ораклы стоят поверх ASM а это решение работает минуя ReadFileScatter() и тем более Windows. в конце концов контроллер получит все тот же многоблочный запрос. которое API его сформирует совершенно не важно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 20:24 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Ivan DurakAlexander Ryndinпропущено... Если это OLTP, то там используются bind. т.е. полный парсинг исчезающе редкая операция. Если bind не используются, то разработчика на кол. почитай чтоли - как раз бинд и не используется из-за приложения. А переписывать его лень. Уха-хахахаТо что кто-то не использует bind ведь не делает парсер тормознутым. Ну и на крайняк есть CURSOR_SHARING ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 21:01 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Alexander RyndinТо что кто-то не использует bind ведь не делает парсер тормознутым. Ну и на крайняк есть CURSOR_SHARINGЭтот костыль был придуман не сразу. в 10-ке кажется? Ну и решением быстрого парса не является, и опять отправляет запрос в кеш. А если его там нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 21:14 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Relic HunterAlexander RyndinТо что кто-то не использует bind ведь не делает парсер тормознутым. Ну и на крайняк есть CURSOR_SHARINGЭтот костыль был придуман не сразу. в 10-ке кажется? Ну и решением быстрого парса не является, и опять отправляет запрос в кеш. А если его там нет?8i.... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 21:24 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Relic HunterAlexander RyndinТо что кто-то не использует bind ведь не делает парсер тормознутым. Ну и на крайняк есть CURSOR_SHARINGЭтот костыль был придуман не сразу. в 10-ке кажется? Ну и решением быстрого парса не является, и опять отправляет запрос в кеш. А если его там нет?При втором запуске запроса в shared pool уже будет дерево разбора и план запуска. В чем проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 21:31 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Аффтар, поверь, дешевле переписать прикладухи на бинд, нежели сменить SQL, что есть нереальный геморрой, архитектура разная, многих фич нет в pg, но есть в ora и наоборот, многие фичи не так как в ora работают, подводные камни в pg есть не хуже оракловых и так далее. Обе базы сопоставимы, но у ora оптимизатор более вылизан. Начните писать новую версию клиентов с биндов. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 11:13 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
PG может выиграть у Оракля. И MySQL с Firebird'ом могут выиграть у Оракля. И даже FoxPro с MS Access'ом могут. В некоторых частных случаях. Быть может, у топикстартера как раз такой частный случай. К примеру, приложение настолько кривое или администрование СУБД поставлено настолько убого, что даже переход на PG даст выигрыш по сравнению с текущей ситуацией. А мы об этом понятия не имеем. А в общем случае, конечно, к переходу с Oracle (даже с SE) на PG в поисках повышения производительности и к приравниванию PG к Ораклю нельзя относиться серьёзно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 11:16 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
И самое главное . 1)прикладухи под пж всё равно потом придётся переписывать. 2)Выигрыша в скорострельности это может и не дать. 3)Под pg нужно затачивать железо - требование к дискам и к памяти особые. 4)Под pg понадобится ОЧЕНЬ хороший linux сисадмин и железячник ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 11:18 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Victor MetelitsaА в общем случае, конечно, к переходу с Oracle (даже с SE) на PG в поисках повышения производительности и к приравниванию PG к Ораклю нельзя относиться серьёзно. Я могу гарантировать, что тупое перекладывание запросов на другой SQL совершенно точно положит производительность в нуль. Неважно откуда куда идёт миграция. Посмотрите на 1С ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 11:23 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Подпольщег4)Под pg понадобится ОЧЕНЬ хороший linux сисадмин и железячник Если в бюджете сумму из строки лицензионные платежи переместить в строку ФОТ , то думаю, что толпы хороших сисадминов и железячников будут стоять в очереди в ОК. . ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 11:46 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Victor Metelitsa, автор также пишет ......Основной упор идет на то, что кривой оптимизатор запарывает всю производительность, приходится использовать кучи хинтов в запросах, а на постгресе этой проблемы быть не должно из-за более умного оптимизатора.... Помню я где-то читал что PG использует генетические алгоритмы для отбора наилучших планов. Возможно это и есть так козырная карта о которой пишет т.н. "руководство". Но даже в этом случае нужно какое-то моделирование. Ребят! В этой области (миграция с одной БД на другую) практически нет экспертов которые скажут что тут будет +25% бенефита к примеру. Это всё от очень-очень многого зависит. Всё надо пробовать. Макеты создавать. У оракла 5 видов партишионинга. Как это замапить на PG без деградации перформанса? Никто не знает. Как портировать PLSQL код? ХЗ. Ну вот тут что-то пишут http://www.postgresql.org/docs/7.3/static/plpgsql-porting.html ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 12:46 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Yo.!эх Сережа, именно эти архитектурные "слабости" и делают оракл #1. оракл ставят в банк, а постгрес с его строками в банк не поставят, потому что оракл с его строками вытянет нагрузку любого банка, а постгрес фиг. Как показал пример Сбербанка - хороший банк и Oracle озадачить сможет. :) Yo.!если ораклу нужно хранить строковые сочинения - есть CLOB, который от варчара не отличить. Увы и ах - отличить. Недавно разбирался с ошибкой, когда склеивание varchar с CLOB порой приводило к NULL в результате. Yo.!в том числе кол-во блоков таблицы в кеше. и никакой SSD долбеж одноблочным чтением не выправит, Ну 128 запросов к контролеру пришедших за время позиционирования головки отработают не сильно медленнее 1 на всу дорожку. С точки зрения SSD - прочитать 64 сектора в разнобой может в теории быть эффективнее, чем 128 махом. Но впрочем и чтобы добиться того, чтобы чтение лишнего нагрузило чрезмерно надо постараться. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 13:01 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Alexander RyndinПри втором запуске запроса в shared pool уже будет дерево разбора и план запуска. В чем проблема? В том, что на третьем бинде может оказаться, что план не оптимальный. :) Статистика по сегодняшней партиции еще не собрана. И т.д. и т.п. И в конце концов окажется что для высоконагруженного приложения с полным использованием железа все одно придем к необходимости ручной оптимизации высококлассным специалистом, а при небольшой нагрузке не видно разницы. Но продвинутый оптимизатор - это шаг навстречу прогресса. Тут не поспоришь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 13:09 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Автор вбросил и скрылся :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 13:32 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Q.TarantinoАвтор вбросил и скрылся :) Наверно поменял cursor_sharing на force и все взлетело. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 14:15 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Сергей АрсеньевAlexander RyndinПри втором запуске запроса в shared pool уже будет дерево разбора и план запуска. В чем проблема? В том, что на третьем бинде может оказаться, что план не оптимальный. :) Тогда включатся в игру всякие adaptive cursor sharing, cardinality feedback и прочее. И может самопофиксится. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 14:18 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Сергей Арсеньев, по поводу LOB если объём больше 200 мегабайт - в pg случаются неприятности, а на pg_conf мне сказали, что штатная LOB, которая не bytea/text поддерживается только для совместимости и в дальнейшем её хотят выпилить. В oracle с этим проблем меньше. Стало быть если прикладуха реально использует эту киллер-фичу - у разрабов будет много яркого и интересного сексу. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 14:18 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Сергей АрсеньевКак показал пример Сбербанка - хороший банк и Oracle озадачить сможет. :) один пример из десятка миллионов банков не очень показателен. тем более на фоне падений континентов у мсскл. Сергей АрсеньевУвы и ах - отличить. Недавно разбирался с ошибкой, когда склеивание varchar с CLOB порой приводило к NULL в результате. руки кривые, у меня я еще в 90х применял конкотенацию и substr. больше всего меня впечатлило тогда, что пхп как с варчаром работал, без всяких танцев с LOB объектами. Сергей АрсеньевНу 128 запросов к контролеру пришедших за время позиционирования головки отработают не сильно медленнее 1 на всу дорожку. С точки зрения SSD - прочитать 64 сектора в разнобой может в теории быть эффективнее, чем 128 махом. Но впрочем и чтобы добиться того, чтобы чтение лишнего нагрузило чрезмерно надо постараться. к чему теоризировать, поставь DB_FILE_MULTIBLOCK_READ_COUNT=1 и посмотри сам. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 14:21 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
По поводу падений процессинга в Сбербанке. Тема интересная. Я какое-то время за ней следил а потом каюсь... забил и дела были. Разумеется Оракл тогда не ругал разве что ленивый. Но КМК причины подобных аварий не простые. И одной инструкцией тут не отпишешся. Вобщем читаем и вспоминаем как было. Это-ли последняя ссылка на скруле? Прошу подтвердить кто вкурсе дел. http://www.sql.ru/forum/953904/orakle-okazyvaetsya-vinovat ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 14:53 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Сергей АрсеньевAlexander RyndinПри втором запуске запроса в shared pool уже будет дерево разбора и план запуска. В чем проблема? В том, что на третьем бинде может оказаться, что план не оптимальный. :) Статистика по сегодняшней партиции еще не собрана. И т.д. и т.п.Мы про OLTP говорим. Там такого быть не может. Для OLAP-нагрузки, естественно, этого делать не надо, но для DWH время парсинга стремится к нулю по сравнению со временем выполнения запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 17:04 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Melkomyagkii_newbiQ.TarantinoАвтор вбросил и скрылся :) Наверно поменял cursor_sharing на force и все взлетело. Да не, читаю по вечерам ) Все у них нормально с bind переменными. Все запросы хранятся в xml файлах. Все что может меняться в запросах оформлено параметрами, работает через JDBC. Чтобы разбираться, нужно получить одобрение. Пока пишем планы и чиним мелкие баги. После переписывания нескольких запросов сложилось впечатление, что вся проблема в кривом проектировании таблиц. Связи избыточны и неочевидны, нормализация местами сильно хромает. Администрирование насколько понял, тоже из разряда дать права пользователю, посмотреть кто заблокировал сессию. Еще слишком много запросов выполняется лишних. Там где можно было передать один ID и запросом вытащить всю необходимую инфу, выполняется 30 маленьких запросов, где каждый вытаскивает кусочек информации. Например, методы getUserLastName, getUserFirstName, getUserBirthDate, getUserDocID, getDocSerialNumberById... чтобы собрать информацию о пользователе. В общем, нужно получить одобрение, доступ и тогда уже разбираться. Мне было интересно услышать мнение о целесообразности миграции вообще. Я услышал и убедился что большинство согласно с тем, что сама идея плохая. А то вдруг все переходят счастливо на постгрес и у всех производительность резко возрастает, а я буду отговаривать людей )) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 18:52 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov...Ню-ню... прошу прощения. Вам тут просветления и открытия век никто не обещал. Но и Вам, вполне разумно, стоило бы оставить свое "ню" ровно там, откуда Вы его вытащили. Это может сберечь Вас от сопротивление отвечать человеку, который дает основания для сомнения в понимании смысла букв, которые он использует. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 19:59 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
boobyЭто может сберечь Вас от сопротивление отвечать человеку, который дает основания для сомнения в понимании смысла букв, которые он использует. Я один думаю, что это гуглотранслейт?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 20:09 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov... Я один думаю... попробуйте не стесняться своих мыслей, даже если Вас смущает, что Вы их думаете один. Это даст Вам шанс перейти от обсуждения собственных фобий (или предложения такого обсуждения другим писателям в топик) либо к размышлению над существом высказанных оппонентами тезисов, либо к формулировке осмысленных уточняющих вопросов, либо к добровольному, допустимо считать - временному, выходу из дискуссии. Возможностей много может оказаться открытыми, если не отгораживаться от них непроходимой глупостью в маске якобы понимания. (Это просто опознается - в Вас не т печали - значит - не может быть оставшимся места для мудрости.) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 20:31 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
boobyВозможностей много может оказаться открытыми Хорошо, что сказали Вы это. Потому что теперь могу я свободно пальцем ткнуть в оффтопик, где NULL ноды хранятся в B*tree индексе, и при этом вовсе не дорого оказывается такое. Но чтобы Оракула пифиям возможность понимания открылась, им непроходимую глупость преодолеть таки придётся. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 20:38 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Вы бы все-таки задумались о заточке пальца. Это без подъебок и ухмылок, а просто - чтобы тыканье оказалось пригодным к обсуждению - не провоцируйте собеседников на "хи-хи". От Вас большего не требуют . ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 20:56 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Жалкая картина. Пифиям не судьба. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 21:00 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
booby, ваши комменты - пустопорожняя болтовня, сгенерированная роботом, и переведенная гуглотранслэйтом. Такое впечатление, что кто-то тестирует на форуме вариант "Элизы". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 21:01 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
kdv, ваше мнение бесценно . Элиза. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 21:09 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
daunitoДа не, читаю по вечерам ) ну да, как нормальный еврей. запулил, собрал информацию, а потом выйдешь героем - как все разрулил! :) а ведь изначально молчал что ты типа тот сторонний аналитик. теперь мы знаем как ты занимаешься анализом :) Вот они, интеграторы в действии! :) Ща все применит и сдерет с конторы лямов 10 :) И обидно не то, что кто-то тут сможет заработать на доверчивых админах, а то что из-за таких как ты ценник на ДБА в последнее время круто падает, видимо спроса просто нет по причине, что решают проблемы наши обычные эникейшики при помощи форумов. И не надо тут кризис приплетать, все понять можно потому, сколько подобных тупых тем создается. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 22:29 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Q.Tarantino, я в курсе, у тебя уже бомбило в соседней теме. Не переживай, я не дба и не интегратор. И 10 лямов уж точно не срублю. Кстати, тема если ты не заметил, вполне себе холиварная и никакой конкретики не несет. Пространные рассуждения о перспективах замены оракла на постгрес с целью улучшения производительности. А лично по твоей проблеме, жизнь все расставит на свои места, тут особо можно не беспокоиться. Кому надо все равно найдет любыми путями всю инфу. Профессионалы всегда востребованы, открыты и дружелюбны (из личных наблюдений). У меня на одной из работ был дба, который если что-то починит, то никогда не говорил как это починил и в чем была проблема. Боялся конкуренции и что его знания переймут другие. 10 лет спустя он работает все в той же шарашке за копейки и сыскал себе славу знатного мудака на весь наш небольшой город ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2016, 02:07 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Q.TarantinoИ обидно не то, что кто-то тут сможет заработать на доверчивых админах, а то что из-за таких как ты ценник на ДБА в последнее время круто падает, видимо спроса просто нет по причине, что решают проблемы наши обычные эникейшики при помощи форумов. да не, все не так. Контора живет с тормозами уже много лет и ДБА за все это время так ничего и не сделали. Сказали, что тут администрирование бессильно, мол, переделывайте базу. Может ценник на них не просто так падает? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2016, 02:20 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
daunitoда не, все не так. Контора живет с тормозами уже много лет и ДБА за все это время так ничего и не сделали. Сказали, что тут администрирование бессильно, мол, переделывайте базу. Может ценник на них не просто так падает?ё... ну запостал бы тормоза сюды. мы-бы скопом ченить решили... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2016, 02:22 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
daunito, при определенных усилиях, я думаю, и Оракл можно раком поставить. И ДБА тут ничего не сделает. Все зависит от разрабов. С другими СУБД та же фигня - если разрабы отделены от админов, то обычно разрабы лепят просто жуткую чухню. Которую потом исправлять-переисправлять. Ну или экстенсивным методом - вместо HDD ставить жуткие рэйды из SSD. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2016, 02:41 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
kdv, лучше сразу на RAM-диски. они шустрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2016, 03:09 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
daunito... После переписывания нескольких запросов сложилось впечатление, что вся проблема в кривом проектировании таблиц. Связи избыточны и неочевидны, нормализация местами сильно хромает. ... Кмк, с вероятностью 80% это основа проблем любой БД, независимо от СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 12:05 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
daunitoда не, все не так. Контора живет с тормозами уже много лет и ДБА за все это время так ничего и не сделали. Сказали, что тут администрирование бессильно, мол, переделывайте базу. Может ценник на них не просто так падает? мы этого знать не можем, ведь мы даже отчета AWR не можем увидеть. потому что-то конкретное говорить бессмысленно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 12:27 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
У меня была аналогичная ситуация с Телекомами. DBA часто ставились перед фактом что всё плохо, и надо что-то делать. AWR и Statspack собирали много раз и анализировали. Очень много аналитических и агрегирующих запросов типа GROUP BY ... HAVING ... ORDER.. Проиндексированы и соптимизированы с помощью SqlTune. Ничего не помогает. Всё медленно. Всё сводилось к мысли что надо переписывать бизнес-логику. Но к сожалению взаимодействие между сектором ДБА и разработки не было налажено. Можно было поговорить по телефону с разработчиком но у него был свой стек начальников который всячески блокировал любую постороннюю активность. И вобщем все начинания и процессы оптимизации стопорились на уровне нежелания разработчика вникать в суть оптимизации. Дескыть вы - ДБА ваша проблема. А динамический билдер запросов который был вшит в клиента и который позволял формировать совершенно невообразимые курсоры до сих пор работает и флудит плохими планами. Уже увольняясь с телекомов я писал письма с предложениями по внеднению OLAP-подходов, но всем было пох. Думаю что так всё и осталось. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 12:54 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonНо к сожалению взаимодействие между сектором ДБА и разработки не было налажено. Можно было поговорить по телефону с разработчиком но у него был свой стек начальников который всячески блокировал любую постороннюю активность. в подобных случаях недовольных пользователей надо отправлять к разработчикам. пусть они с ними общаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 13:04 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Q.Tarantinoв подобных случаях недовольных пользователей надо отправлять к разработчикам. пусть они с ними общаются. Я не хочу сворачивать в не-техническую тему. И также не хочу палить контору. Но шишки всё равно доставались ДБА (сектору эксплуатации). Таково было положение вещей. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 13:06 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovХорошо, что сказали Вы это. Потому что теперь могу я свободно пальцем ткнуть в оффтопик, где NULL ноды хранятся в B*tree индексе Забавно, но NULLы можно заставить хранить и ORACLE в составном индексе. Как и в PG добавить в индекс where ... not null и получить как в Oracle. Спор по этому поводу яйца выеденного не стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 16:51 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Сергей АрсеньевЗабавно, но NULLы можно заставить хранить и ORACLE в составном индексе.bitmap индекс тожэе хранит NULL'ы. Сергей АрсеньевСпор по этому поводу яйца выеденного не стоит.+1, просто архитектурная особенность, зная которую никаких сложностей не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 16:59 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Сергей АрсеньевDimitry SibiryakovХорошо, что сказали Вы это. Потому что теперь могу я свободно пальцем ткнуть в оффтопик, где NULL ноды хранятся в B*tree индексе Забавно, но NULLы можно заставить хранить и ORACLE в составном индексе. Как и в PG добавить в индекс where ... not null и получить как в Oracle. Спор по этому поводу яйца выеденного не стоит. NULL-s можно заменить на свою волшебную константу и использовать через NVL. При этом мы получим как бонус индексирование. Но я-бы предложил другой подход. Как известно (ох как я люблю эту фразу!) или "есть общепризнанный факт" что индекс эффективен когда объём выборки не превышает 7%. Или еще меньше. Я уж не помню. В разные времена эта цифира была разной. И чем больше становились базы - тем меньше была эта пропорция. И вобщем-то принудительное индексирование NULL тяготеет к переосмыслению этого принципа. Мы должны индексировать ПОЛЕЗНОЕ. А пустота - это бесполезное. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 17:25 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonНо я-бы предложил другой подход. Как известно (ох как я люблю эту фразу!) или "есть общепризнанный факт" что индекс эффективен когда объём выборки не превышает 7%. Мы должны индексировать ПОЛЕЗНОЕ. То есть из индекса можно выкинуть любое значение, количество записей с которым превышает 7% от общего числа? Странно, что Оракул так не делает... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 17:28 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, при чём тут Oracle? Это обычно стоимостное правило для Sequental/Scattered reads. Основано на физике работы жёсткого диска. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 17:38 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
И опять-же... из индекса ничего выкидывать не надо. Правило касается не размера индекса. А размера выбоки из него. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 17:43 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonпри чём тут Oracle? Ну это же именно он выкидывает NULL потому что хранить его "слишком дорого", как выше сказали. А другие значения, хранить которые не только дорого, но и бесполезно, поскольку использование индекса по ним невыгодно, он почему-то не выкидывает. Хотя может. Странный он... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 17:44 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonСергей Арсеньевпропущено... Забавно, но NULLы можно заставить хранить и ORACLE в составном индексе. Как и в PG добавить в индекс where ... not null и получить как в Oracle. Спор по этому поводу яйца выеденного не стоит. NULL-s можно заменить на свою волшебную константу и использовать через NVL. При этом мы получим как бонус индексирование. Но я-бы предложил другой подход. Как известно (ох как я люблю эту фразу!) или "есть общепризнанный факт" что индекс эффективен когда объём выборки не превышает 7%. Или еще меньше. Я уж не помню. В разные времена эта цифира была разной. И чем больше становились базы - тем меньше была эта пропорция. И вобщем-то принудительное индексирование NULL тяготеет к переосмыслению этого принципа. Мы должны индексировать ПОЛЕЗНОЕ. А пустота - это бесполезное.если оно бесполезное - зачем же его используют? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 18:10 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
SergSuperесли оно бесполезное - зачем же его используют? Это вопрос к архитектору. Возможно поиск WHERE field IS NULL следовало-бы переделать WHERE field = 'somevalue' и тогда вопрос звучал бы по другому. Но кто-то упорно делает ставку на ценность пустых полей в кортеже. Вобщем... я признаю что поиск WHERE field IS NULL имеет место быть. Как анализ. Или агрегация чего-то.. Но как вы себе представляете OLTP транзакцию с таким поиском? Априори я напоминаю что NULL неуникален и запрос может вернуть много полей для нашей OLTP транзакции. И зачем нам нужна OLTP транзакция с неуникальной селективностью? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 18:34 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonАприори я напоминаю что NULL неуникален и запрос может вернуть много полей для нашей OLTP транзакции. Ты не поверишь, но для не-уникального индекса любое значение не уникально и запрос на равенство ему может вернуть много записей. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 18:49 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonВобщем... я признаю что поиск WHERE field IS NULL имеет место быть. Как анализ. Или агрегация чего-то..вот мне как-то пришлось мигрировать с одной схему в другую практически все таблицы, ключи использовались составные естественные, где nullов было порядочно. Например [код+дата окончания действия] таблиц порядка 4000, вручную делать новые индексы нереально вот меня сильно тогда подвела неиндексированность nullов авторАприори я напоминаю что NULL неуникален и запрос может вернуть много полей для нашей OLTP транзакции.не только первичные ключи индексируются ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 19:13 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonSergSuperесли оно бесполезное - зачем же его используют? Это вопрос к архитектору. Возможно поиск WHERE field IS NULL следовало-бы переделать WHERE field = 'somevalue' и тогда вопрос звучал бы по другому. Но согласись хранить somevalue вместо пустоты там где не введены данные - это тот еще архитектурный подход. А для того, чтобы найти строки, в которых до сих пор не заполнили определенное поле. Вполне себе осмысленная и не бесполезная операция. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 11:47 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Я просто продавливаю свой аргумент в пользу CRUD/OLTP. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:08 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Коллеги. Давайте немного отвлечемся и вспомним SQL и основы проектирования БД. Вспомним картинку. Нарисована таблица. Где часть полей - ключевые. Инстанциированы. Часть полей REQURED (NOT NULL). И часть полей - NULLABLE. Опциональные поля. Таких полей может быть много. Яркий пример - географические справочники и классификаторы. Там вечно - вакуум. И еще много подобных generic-примеров. Незаполненные анкеты физлиц. e.t.c. Что такое есть NULL с точки зрения реляционной алгебры? Это не константа. Не ноль. Не false. Это дырка. Выколотое значение. В таблицах иногда его обозначают как прочерк. Общая суть - пустое значение элемента в кортеже. Неинициализированное. Базы данных еще на этапе создания предполагают что не все поля могут быть инстанциированы. Это разумно. Данных нет. И таких дырок может быть ... ну 25% от общего количества. А то и больше. Всё зависит от рода информации. С точки зрения системы хранения NULL-s - это вакуум. Его можно наделять разными поисковыми смыслами, но в первую очередь, исходя из принципов Реляционной алгебры это полное отсутствие информации. Разумеется storage-engines могут учитывать эту особенность или нет. ЕМНИП Oracle не резеревирует место в db_blocks в таблицах для пустых значений. И это разумно. Давайте зададим вопрос. Разумно-ли аллоцировать место в индексах для NULL's? Особенно беря в расчёт процент пустых значений. Представьте себе константу которая "лупит" по B+Tree, порождая только листовые значения со ссылкой на data_rows. Давайте зададим другой вопрос. Индекс строиться для очень быстрых операций извлечения инфы. Какой смысл очень быстро извлекать пачку NULL-s? Может это неверный дизайн и эти загадочне NULL-s rows имеет смысл положить в таблицу-отстойник? Напоследок хочу сказать что опция VIRTUAL COLUMN в Oracle позволяет трансформировать любое значение для индексации. Но оно того стоит? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 13:41 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonИ таких дырок может быть ... ну 25% от общего количества. А то и больше. Дальше можно не читать. Так любому значению можно от балды назначить любой удобный процент распределения и объявить, что его включение в индекс бессмысленно. Причём с тех же самых доводов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 13:51 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonДавайте зададим вопрос. Разумно-ли аллоцировать место в индексах для NULL's? не смотря на то, что NULL это отсутствие значения, в компьютере как-то все же приходится хранить, есть значение или его нет (null). Для этого используются индикаторы. Например некий бит = 0 - значение есть. бит = 1 - значения нет, т.е. null. Так что хранить хотя бы 1 бит на null все же приходится. Кроме того, сам null точно так же равноправен, как и другие значения, например 1, 2, 3. Представьте себе миллион записей с равномерным распределением значений 1,2, 3. Создание индекса по этим значением вас не напрягает? А поиск where field = 1 ? А теперь добавим к 1, 2, 3 так же равномерно распределенное null (т.е. получается по 25% на каждое значение - 1, 2, 3 и null). Чем null провинился, что мы его выкинем из индекса? Чем отличается where field = 1 от where field is null ? По-моему, оба этих условия поиска равноправны. Но в итоге что - для field = 1 индекс будет использоваться оптимизатором, а для field is null поедет фуллскан? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 14:04 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
А какие DBMS индексируют null by default. Дайте мне список pls. Я просто хочу владеть информацией хотя-бы на уровне названий. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 14:43 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonА какие DBMS индексируют null by default. Дайте мне список pls. Я просто хочу владеть информацией хотя-бы на уровне названий. MS SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 17:35 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Ivan DurakmaytonА какие DBMS индексируют null by default. Дайте мне список pls. Я просто хочу владеть информацией хотя-бы на уровне названий. MS SQL да и DB2 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 17:41 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Firebird ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 17:43 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonА какие DBMS индексируют null by default. Caché (в некоторых случаях в индексе значение маркера для NULL может быть другим). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 17:56 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Ок. Спасибо. Почитал про DB2. Насколько я понял, индексация NULL - это опция про создании индекса. Верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 18:00 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Почитал оракловый форум. Workarounds. Здесь - предлагают partitioning http://www.sql.ru/forum/1102209/indeksirovanie-tolko-zapisey-s-null Тоже интересно. При биткартовый индекс и прочее. http://www.sql.ru/forum/105511/indeks-i-null-znachenie Пишет к сож. ныне покойный Андрей Криушин. Царствие ему... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 18:10 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonЧто такое есть NULL с точки зрения реляционной алгебры? Это не константа. Не ноль. Не false. Это дырка. Выколотое значение.тем не менее это информация ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 19:35 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
daunito Еще слишком много запросов выполняется лишних. Там где можно было передать один ID и запросом вытащить всю необходимую инфу, выполняется 30 маленьких запросов, где каждый вытаскивает кусочек информации. Например, методы getUserLastName, getUserFirstName, getUserBirthDate, getUserDocID, getDocSerialNumberById... чтобы собрать информацию о пользователе. Я такое безумие уже видел (в приложении "Аэ..." фирмы U) - и, быть может даже, что это те же самые люди делали. Когда-то я ругал (и до сих пор ругаю) пару фирм (H и I) за их любовь к хранимым процедурам и курсорам. Потом оказалось, что они ещё молодцы по сравнению с фирмой L с их базоданново-агностическим приложением на JBoss'е, которые на малейший чих тянут данные внутрь app-сервера и манипулируют ими там. Но в "Аэ%" оказалось нечто особенное. К примеру, когда в Hybernate люди пытались сделать вид, будто никакой базы данных не существует и они чисто с Java работают, в "Аэ%" люди делали вид, что они работают... с диалектом Объектного Паскаля a la Delphi. Изобразили внутри базы тотальную иерархию наподобие TObject, от которого всё прямо или косвенно наследуется, каждый класс - дополнительная таблица, пара (!) пакетов на подкласс, каждое изменение - отдельный апдейт (т.е. вместа update xxx set firstname=x, lastname=y where id=z надо выполнить setfirstname и затем setlastname (после прохождения цепочки вызовов будут выполнены два update - даже Hybernate так не поступает)). Быстро такое работать в принципе не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2016, 15:23 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonVictor Metelitsa, автор также пишет ......Основной упор идет на то, что кривой оптимизатор запарывает всю производительность, приходится использовать кучи хинтов в запросах, а на постгресе этой проблемы быть не должно из-за более умного оптимизатора.... Помню я где-то читал что PG использует генетические алгоритмы для отбора наилучших планов. Возможно это и есть так козырная карта о которой пишет т.н. "руководство". Пусть "автор" прочитает Cost Base Oracle Fundamentals. Jonathan Lewis Troubleshooting Oracle Performance (second edition). Christian Antognini а потом говорит про более умный оптимизатор PG. Проблемы такие, что скорее можно говорить про более глупых разработчиков PG. Подумать только, хинты им реализовывать западло. Вот IBM от такой глупости отказалась. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2016, 15:33 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
maytonОк. Спасибо. Почитал про DB2. Насколько я понял, индексация NULL - это опция про создании индекса. Верно? Не совсем. DB2 NULL'ы всегда индексировала, но когда решили взять курс на попытку переманивания ораклистов, реализовали, в том числе, и возможность неиндексирования NULL'ов. В самом деле, бывают случаи, когда выгодно NULL'ы индексировать, и бывают случая, когда выгодно, чтобы NULL'ов не было. Если выбирать одно из двух, то сложно сказать, что предпочесть. И хорошо, когда есть обе возможности. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2016, 15:42 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Victor MetelitsamaytonОк. Спасибо. Почитал про DB2. Насколько я понял, индексация NULL - это опция про создании индекса. Верно? Не совсем. DB2 NULL'ы всегда индексировала, но когда решили взять курс на попытку переманивания ораклистов, реализовали, в том числе, и возможность неиндексирования NULL'ов. В самом деле, бывают случаи, когда выгодно NULL'ы индексировать, и бывают случая, когда выгодно, чтобы NULL'ов не было. Если выбирать одно из двух, то сложно сказать, что предпочесть. И хорошо, когда есть обе возможности.на самом деле корень тут в том, что оракл предпочитает вообще NULL'ы не хранить и если последние поля в конце строки(row) то их и не хранят,т.е. не занимают вообще места. Поэтому если зная это размещать опциональные nullable поля последними, то и размер базы уменьшается и нагрузка на процессор снижается. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2016, 16:20 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
xtenderесли зная это размещать опциональные nullable поля последними, то и размер базы уменьшается и нагрузка на процессор снижается. Ну да, на каждый NULL же тратится целый бит. Или всё ещё байт?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2016, 16:28 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ты меня про MS SQL спрашиваешь? Не знаешь сколько там тратится? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2016, 16:29 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
А вообще этот вопрос не стоит и выеденного яйца - захочешь индексировать null'ы - сможешь, оракл дает несколько возможностей. А в целом, вопрос этот чисто архитектурный и никоим образом не является минусом. Он очень схож с архитектурным подходом с EAV - хранить ли NULL в EAV и при каких условиях, т.е. заводить ли лишнюю строку в EAV-таблице если value является null: иногда выбирают что надо, иногда - нет... зависит от... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2016, 16:33 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
И вообще смешно все это смешно Судя по вашим придиркам в оракле все очень и очень хорошо, если докапываетесь только до индексирования NULL'ов ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2016, 16:35 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Тут опять надо сравнивать разные DBMS. http://stackoverflow.com/questions/556363/space-used-by-nulls-in-database In Oracle, it depends on type of the column and its position in the row. If the NULL columns are last in the row, then they don't take any space at all. Oracle prepends the total row size to each row, everything that doesn't fit is considered NULL. If there is some non-NULL data after a NULL column, then the NULL is stored as a single byte of 0xFF (that is, NULL type). Empty VARCHAR2 is equivalent to NULL. If you test the type of a literal NULL returned from SELECT list, it will give you a VARCHAR2(0) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2016, 16:39 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Victor Metelitsa В самом деле, бывают случаи, когда выгодно NULL'ы индексировать, и бывают случая, когда выгодно, чтобы NULL'ов не было. Если выбирать одно из двух, то сложно сказать, что предпочесть. И хорошо, когда есть обе возможности. ога, помню как у нас неделю висел труп программиста заюзавшего в мсскл "обе возможности" set ansi null жестокая была смерть ... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2016, 17:08 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
xtenderИ вообще смешно все это смешно Судя по вашим придиркам в оракле все очень и очень хорошо, если докапываетесь только до индексирования NULL'ов Нет ничего такого, где всё было бы хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2016, 22:04 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovxtenderесли зная это размещать опциональные nullable поля последними, то и размер базы уменьшается и нагрузка на процессор снижается. Ну да, на каждый NULL же тратится целый бит. Или всё ещё байт?.. Интереснее то, что для типичных условий a la where x = ?, where x < ? и т.п., null'ы в колонке X в самом деле не нужны и в Oracle иногда можно на этом очень неплохо выиграть. А ещё можно реализовать такие unique constraint'ы, когда можно запихать в колонку неограниченное количество null'ов (а когда null'ы индексируются, получается, что один null равен другому и более одного не запихать). Неудобно же, когда условия выглядят как where x is null (workaround'ы мне кажутся неизящненькими; однако заметим, что для условий наподобие where x is null and y = ? ораклячьи индексы очень наже годятся, ибо в индексе по (y,x) нужные null'ы проиндексируются). Теперь надо как-то считать - для скольких запросов отсутствие null'ов в индексе помогает, для скольких мешает, какова величина помощи/помехи, какова критичность того или иного запроса. Как много людей считали такую статистику для своих приложений? Мне кажется, что where x is null характерны больше для админских/разработческих дел, одноразовых запросов, но не для готовых приложений (исключая, быть может, эмуляцию not exists через внешнее соединение xxx left join yyy on xxx.x=yyy.x where yyy.x is null, причём там от индекса по yyy(x) отнюдь не требуется хранение null'лв). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2016, 22:35 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Модератор: Victor Metelitsa, мы просим вас не писать сообщения которые не имеют отношения к Сравнению СУБД ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2016, 00:33 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Использовал обыкновеннейшую, безобиднейшую, всем известную поговорку "В огороде бузина, а в Киеве дядька", только слегка модернизированную (любой вспомнит то, что я вспомнил). В самом деле, что бы ни имелось в виду под "set ansi nulll" в MS SQL (я не в курсе), особой связи с возможностью индексировать в DB2 так и эдак не прослеживается. Если (предположим) set ansi null в MS SQL повлияет на семантику запросов, потенциальую выдачу неправильных результатов, то DB2-шные индексы повлияют всего лишь на производительность. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2016, 11:28 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Victor MetelitsaЕсли (предположим) set ansi null в MS SQL повлияет на семантику запросов Ага, он от этого внезапно перестанет имитировать Оракула с его неразличением NULL и пустой строки. Естественно у пифий от этого срывает крышу и они превращаются в гарпий. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2016, 12:16 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Victor MetelitsaА ещё можно реализовать такие unique constraint'ы, когда можно запихать в колонку неограниченное количество null'ов (а когда null'ы индексируются, получается, что один null равен другому и более одного не запихать). хотите сказать, что СУБД индексирующие NULL этого сделать не могут? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2016, 13:37 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Симонов ДенисVictor MetelitsaА ещё можно реализовать такие unique constraint'ы, когда можно запихать в колонку неограниченное количество null'ов (а когда null'ы индексируются, получается, что один null равен другому и более одного не запихать). хотите сказать, что СУБД индексирующие NULL этого сделать не могут? DB2 это делать не могла. http://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000919.html?cp=SSEPGG_10.5.0/2-12-7-80 When UNIQUE is used, null values are treated as any other values. For example, if the key is a single column that may contain null values, that column may contain no more than one null value.(имеет смысл, когда не EXCLUDE NULL KEYS, который Specifies that an index entry is not created when all parts of the index key contain the null value.) ну, правда, в явном виде unique-constraint там вообще http://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000927.html?cp=SSEPGG_10.5.0/2-12-7-101 UNIQUE (column-name, ...) Defines a unique key composed of the identified columns. The identified columns must be defined as NOT NULL. но я про constraints в широком смысле. а про "все СУБД, индексирующие NULL'ы" или "IBM-еры в принципе не могли бы это реализовать, даже если бы захотели", естественно, такое говорить глупо. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2016, 15:02 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovТак любому значению можно от балды назначить любой удобный процент распределения и объявить, что его включение в индекс бессмысленно. Одолел. Да, бессмысленно. Хочешь убедиться? Собери таблицу на несколько десятков/сотен лямов, в которой столбец имеет 10 уникальных значений. Проиндексируй этот столбец и посмотри план селекта с предикатом по данному столбцу. Там будет фуллскан. Потому что дешевле сделать "<кол-во блоков данных, занимаемых таблицей>/DB_MULTIBLOCK_READ_COUNT" обращений к диску, чем несколько млн вытаскиваний по индексному чтению. Можешь, если очень уж упорот упёрт, влупить хинт, принуждающий бежать по индексу, и снять тайминг времени выполнения суммирования по всей таблице. Сто раз же разжеваны вопросы селективности индекса и ее влияния на эффективность использования индексов... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2016, 13:53 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Старый индексаторСто раз же разжеваны вопросы селективности индекса и ее влияния на эффективность использования индексов... Индексатор такой старый, что не слышал о гистограммах?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2016, 14:07 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСтарый индексаторСто раз же разжеваны вопросы селективности индекса и ее влияния на эффективность использования индексов... Индексатор такой старый, что не слышал о гистограммах?.. Еще как слышал. Только тебе талдычат про нецелесообразность индексирования NULL, когда его отнюдь не скромный процент от общего числа индексируемых строк, и про целесообразность его превращения в не-NULL когда процент содержащих его строк мал, вследствие чего индексирование FBI вида Nvl(This_Col,'IT IS NULL!!!') повлияет на объем быстродействие индекса в пренебрежимо малой степени. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2016, 15:59 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
"Пони бегает по кругу и в уме круги считает..." (с) Старый индексаторТолько тебе талдычат про нецелесообразность индексирования NULL, когда его отнюдь не скромный процент от общего числа индексируемых строк С какого перепугу именно селективность NULL считается априори не скромной, а для "1" или "2" - всё в порядке и в индекс они всегда включаются? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2016, 16:17 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov"Пони бегает по кругу и в уме круги считает..." (с) Старый индексаторТолько тебе талдычат про нецелесообразность индексирования NULL, когда его отнюдь не скромный процент от общего числа индексируемых строк С какого перепугу именно селективность NULL считается априори не скромной, а для "1" или "2" - всё в порядке и в индекс они всегда включаются? А с какого перепугу ты решил что я утверждаю это? Ты мой пост нечитал? Там про 10 уникальных значений , если что, и про то, что далеко не всегда нужен индекс... И таки да - тебе уже сказали что искать по "Where ... IS NULL" когда пустых большинство - бессмысленно, а когда их мало - целесообразно использовать вместо них осмысленные значения (которые войдут в индекс). Какие из букв тебе непонятны? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2016, 16:50 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Старый индексаторКакие из букв тебе непонятны? Откуда взять магическое значение, которое не пересечётся с любым другим значением в полном диапазоне конкретного типа данных. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2016, 16:58 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСтарый индексаторКакие из букв тебе непонятны? Откуда взять магическое значение, которое не пересечётся с любым другим значением в полном диапазоне конкретного типа данных. В справочнике, являющимся источником LOV, предусмотреть оное. Как будто первый раз замужем, ей-богу... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2016, 17:27 |
|
Миграция с Oracle на Postgres
|
|||
---|---|---|---|
#18+
Неиндексирование null-ов - это такие пустяки, мелкое раздражение (с вещами вроде отсутствия log'ов у Firebird'а совершенно не сопоставимо). На этом можно придумывать занятные трюки. Вот так, например: пусть поле f принимает значения 'A', 'B', 'C', ... и "почти всегда" в нём 'A', а нам нужно выбрать where f <> 'A' Antognini описывает такой подход: сделать индекс по nullif(f, 'A') и выбирать where not nullif(f, 'A') is null. Изящное решение, малюсенький индекс. Но, правда, не помню, чтобы мне когда-то приходилось применять такое на практике. В типичных запросах эта особенность Oracle как-то незаметна. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2016, 10:58 |
|
|
start [/forum/topic.php?all=1&fid=35&tid=1552283]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
130ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 243ms |
0 / 0 |