Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Почему в Oracle нет vacuum  [new]
Юн до, стар после
Guest
xtender
Как это делит ничего не занимает?
Помимо пометки строки в таблице, новых данных не возникает и дополнительного места не требуется. В оракле "пометка" плюс новое место в ундо.
Но действительно, в постгресе стоит рассматривать помеченную удалением строку как элемент унды, так как ее место нельзя занимать, пока доудаленная версия строки может потребоваться какой-либо из незавершенных транзакций.
6 апр 17, 16:54    [20374443]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
апдейт делита
Guest
ундевид
Апдейт одного поля в постгресе создает копию строки целиком. зато делит ничего не занимает.
А теперь подумай что же в типичной работе с БД бывает чаще и насколько - апдейт или делит?
6 апр 17, 16:59    [20374473]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51796

апдейт делита
А теперь подумай что же в типичной работе с БД бывает чаще и насколько - апдейт или делит?

Если БД спроектирована нормально, а операторы не вносят чушь, которую потом приходится
изменять на правильную - делит.

Posted via ActualForum NNTP Server 1.5

6 апр 17, 17:08    [20374513]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
Dimitry Sibiryakov,

бред какой-то... Это уже неправильное использование базы... То есть по-твоему, те же изменения статусов у сущностей надо делать через делит-инсерт?
6 апр 17, 18:21    [20374799]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
или еще хуже - сущности вообще не должны изменяться? это уже лог, а не база
6 апр 17, 18:22    [20374801]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51796

xtender
То есть по-твоему, те же изменения статусов у сущностей надо делать через делит-инсерт?

Обычно бизнесу нужна также и история статусов, так что да - через инсерт и, возможно,
делит вместе с сущностью.

Posted via ActualForum NNTP Server 1.5

6 апр 17, 18:33    [20374841]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
xtender
или еще хуже - сущности вообще не должны изменяться? это уже лог, а не база
Это BigData, сэр.
Правда Hive уже стал поддерживать updates правда кривенько.
Dimitry Sibiryakov
xtender
То есть по-твоему, те же изменения статусов у сущностей надо делать через делит-инсерт?

Обычно бизнесу нужна также и история статусов, так что да - через инсерт и, возможно,
делит вместе с сущностью.
Ты в предыдущем сообщении говорил, что delete чаще, а тут уже "возможно".
Вбрасывать надо продуманнее.
6 апр 17, 19:19    [20374970]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
Хотя главный тролль, конечно, ТС.
Этот форум позволяет удобненько смотреть статистику по сообщениям и видно,
что персонаж минимум 10 лет с Ораклом, при этом он ровно год не писал в форум, чтоб появиться, вбросить и снова исчезнуть.
6 апр 17, 19:22    [20374978]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51796

dbms_photoshop
а тут уже "возможно".

Это "возможно", если кто не понял, относится к "вместе с сущностью", ибо удалять историю
состояний сущности без ней самой как-то не слишком осмысленное действо...

Posted via ActualForum NNTP Server 1.5

6 апр 17, 21:03    [20375223]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
RA\/EN
Member

Откуда:
Сообщений: 3659
Dimitry Sibiryakov
dbms_photoshop
а тут уже "возможно".

Это "возможно", если кто не понял, относится к "вместе с сущностью", ибо удалять историю
состояний сущности без ней самой как-то не слишком осмысленное действо...

Вот как раз удаление записей в штатном режиме основных бизнес-процессов как раз наводит на мысль, что уровень бизнеса явно не соответствует тем компаниям, где нужен оракл с поддержкой. Даже мучительное натягивание ентерпрайзных масштабов на стандартную редакцию к такому не приводит.
6 апр 17, 21:10    [20375247]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
AlexGru
Member

Откуда: Пермь рядом
Сообщений: 1600
dbms_photoshop
Хотя главный тролль, конечно, ТС.
Этот форум позволяет удобненько смотреть статистику по сообщениям и видно,
что персонаж минимум 10 лет с Ораклом, при этом он ровно год не писал в форум, чтоб появиться, вбросить и снова исчезнуть.


Уважаемый, это не совсем так. Последний год не было нужды пользоваться форумом. Сейчас приперло все везде переводить с Oracle на Postgres (импортозамещение жеж) и стали возникать вопросы.

Для многих нет особой разницы субд и субд, только одна дорогая, а другая дешевая. Логично ведь, что "при прочих равных", надо переходить на дешёвую.

Мне вот интересна аналогия СУБД с ТС.

Oracle - гелик v12 biturbo в максималке. Можно и на работу ездить и по лесу. И мелкую речку переехать. И трактор тащить из грязи. В общем сильный, надежный, удобный универсал.

Всякие разные MongoDb это как узкоспециализированные решения - квадрик, катер - хорошо выполняют свою узкоспец. задачу.

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

Ну как-то так.

С другой стороны все в праве и по средствам выбирать. Частная страховая или банки могут позволить себе Oracle и пожалуйста, а гос сектор платит не своими, а нашими, поэтому и на четырках могут поездить. Действительно ведь так.
7 апр 17, 11:27    [20376695]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
-2-
Member

Откуда:
Сообщений: 15330
AlexGru
гос сектор платит не своими, а нашими, поэтому ...
Чтобы делать какие-то выводы, нужно сначала сравнить бюджеты регионов 2013 и 2017 по статьям, связанным с информационными системами. На сколько сократились?
7 апр 17, 11:45    [20376806]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
AlexGru
Member

Откуда: Пермь рядом
Сообщений: 1600
-2-,

Не могу сказать на сколько.
7 апр 17, 11:53    [20376853]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
AlexGru
Уважаемый ...
Потрудись в следующий раз избегать обращений как к официанту.
Не совсем понятно к чему этот поток сознания про гелики, катера, Mongo DB, реки и леса.
Еще немного одушевленных персонажей и может вполне себе получиться детская сказочка.
7 апр 17, 12:41    [20377136]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3778
AlexGru
Сейчас приперло все везде переводить с Oracle на Postgres (импортозамещение жеж) и стали возникать вопросы.

Всегда интересовал вопрос зачем что-то куда-то переводить, если можно просто не платить за поддержку, я как-то особой разницы (с т.з. поддержки) не вижу между ораклом без поддержки и PosgreSQL с "поддержкой сообщества", у этого "сообщества" вообще самая популярная рекомендация выглядит как "если что-то тупит, то нужно первым делом сделать vacuum full analyze - вдруг перестанет тупить"
7 апр 17, 12:48    [20377187]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9264
А вообще, смысл очевиден.

За 15 лет номинальный ВВП вырос в 30 раз в рублях и почти в 10 раз в долларах! При значительно ))) меньшем росте реального ВВП ))).

А Oracle всюду, куда можно, уже внедрили. Как расти и развиваться дальше? Правильно - внедрять PostgreSQL. Он может и бесплатный, но внедряют то все равно за деньги! Вот ВВП еще раз в 30 и вырастет.... Разумеется, номинальный. Ну если не вырастит ВВП, то на хлеб с маслом, икрой, виллу в Италии нужным людям все равно хватит )))
7 апр 17, 13:01    [20377275]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3778
Leonid Kudryavtsev,

совсем не дальновидно кмк, PostgreSQL догонит по фичам оракл лет через десять, а дальше что? на другую базу двигать? а вдруг такой фокус уже не прокатит? Нужно сразу брать что-то с перспективой на 20-30 лет, линтер какой-нибудь.
7 апр 17, 13:14    [20377357]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
dbpatch
Member

Откуда:
Сообщений: 1130
AlexGru
Вернее, почему проблема так остро не стоит? Почитать бы по этому аспекту что-то


Как уже сказали выше - в Oracle вместо write ahead log - реализован механизм UNDO.
Для баз данных с относительно небольшим объемом вставки/обновления данных подобная реализация вполне приемлима.

Т.е. для задач класса бухгалтерия - 2.5 бухалтера вносят максимум по три изменения в секунду. В этих условиях
вполне можно позволить себе и не такую роскошь - а еще и форинкеи, идексы и прочие праймари-уникеи всякие, чай мейнфрейм класс выдержит это все рандомное чтение-запись на микроскопической нагрузке (99% случаев применения RDBMS).


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



И все что остается в этом случае - это все UPDATE и даже DELETE приводить к INSERT, даже есть концепция такая, кажется называется Temporal Database (Oracle Workplace - частный случай) https://en.wikipedia.org/wiki/Temporal_database

Т.е. база данных только делает INSERT (его время реакции ожидамое, UNDO не используется), вставляя эдакий version_id или change_time (primary key, естественно, уже невозможен)

А текущее/последнее состояние делать через SELECT v2 ... FROM NOT EXISTS ( v1.id = v2.id and v1.change_time > v2.change_time)


Тем самым получается тот самый WAL. А vacuum потом можно сделать уже вручную - через CREATE new_table AS SELECT ... NOT EXISTS, когда данные из OLTP класса перейдут в DHW - т.е. факты уже обновляться не будут, только читаться, это уже скорее задача ETL
7 апр 17, 13:53    [20377526]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51796

dbpatch
Как уже сказали выше - в Oracle вместо write ahead log - реализован механизм UNDO.

Вообще-то write ahead log это redo, так что undo реализован не "вместо" а "в дополнение".

Posted via ActualForum NNTP Server 1.5

7 апр 17, 13:56    [20377549]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
dbpatch
Member

Откуда:
Сообщений: 1130
Dimitry Sibiryakov
dbpatch
Как уже сказали выше - в Oracle вместо write ahead log - реализован механизм UNDO.

Вообще-то write ahead log это redo, так что undo реализован не "вместо" а "в дополнение".


Называй как хочешь, но да есть концепция, по сути, write log only баз данных.
Частный случай - Interbase/Firebird (могу ошибаться), или из мира NoSQL/Embedded - LevelDB, LightningDB

Когда любой DML это по сути операция copy on write, т.е. гарантированно делается только один iops. Т.е. пишется, по сути, только лог, вся база данных - это лишь redo, а data/undo и прочего - просто нет как класса, только логи.

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

И в Oracle такое можно достичь только принудительным путем - делать только INSERT (приводя UPDATE/DELETE к INSERT), да еще и с APPEND NOLOGGING - т.е. датафайл использовать просто как лог файл (изврат, но иногда приходится и на такое идти, чтоб справиться с потоком фактов).
7 апр 17, 14:02    [20377599]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9264
Offtopic on
+

Андрей Панфилов
Leonid Kudryavtsev,

совсем не дальновидно кмк, PostgreSQL догонит по фичам оракл лет через десять, а дальше что? на другую базу двигать? а вдруг такой фокус уже не прокатит? Нужно сразу брать что-то с перспективой на 20-30 лет, линтер какой-нибудь.

Присутствовал при разговоре по этому поводу в крупной структуре нашей газовой отрасли....

Если уж импортозамещение и все равно деньги Газпром в бюджете выделит, нафига Вам буржуйный PostgreSQL, лучше уж возьмите Линтер. К тому же, по __функциям__ он больше подходил под их задачу. Ну и команда разработчиков Линтера обещала всяческую помощь в проекте (т..к. для них он был важен, как минимум с точки зрения престижа) - никакого понимание у заказчика (около гос. структуры) не нашлось. PostgreSQL и все.

Но на деле, сказали просто... мы для галочки на PostgreSQL перейдем, раз очень большое начальство хочет, а как был Oracle, так он у нас и останется. Как-то так.
7 апр 17, 14:05    [20377624]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9264
dbpatch
И в Oracle такое можно достичь только принудительным путем....

А зачем в Oracle такое достигать? redo log на отдельном диске, а запись в файлы базы идет асинхронно. Дальше можно тюнить размер buffer и кол-во dirty buffer'ом. AFAIK По крайне мере в 8'ке. В PostgreSQL так же.

Если же подходить к настройке экземпляра по принципу "Oracle умный, ему виднее" ( C ) админы, то никакое принуждение не поможет ))). IMHO
7 апр 17, 14:21    [20377715]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
dbpatch
Member

Откуда:
Сообщений: 1130
Leonid Kudryavtsev
dbpatch
И в Oracle такое можно достичь только принудительным путем....

А зачем в Oracle такое достигать? redo log на отдельном диске, а запись в файлы базы идет асинхронно. Дальше можно тюнить размер buffer и кол-во dirty buffer'ом. AFAIK По крайне мере в 8'ке. В PostgreSQL так же.

Если же подходить к настройке экземпляра по принципу "Oracle умный, ему виднее" ( C ) админы, то никакое принуждение не поможет ))). IMHO


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

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

при этом фактов очень много, на терабайты в день, в RAM просто не помещаются, обновления оных приводят к дисковому IO, со всеми вытекающими

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


т.е. сотни миллионов мелких nested-loop на UPDATE/DELETE превращаются в один большой hash-join по требованию, по строкам, которые только INSERT
7 апр 17, 14:29    [20377764]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
Dimitry Sibiryakov
Обычно бизнесу нужна также и история статусов, так что да - через инсерт и, возможно,
делит вместе с сущностью.

dbpatch
И все что остается в этом случае - это все UPDATE и даже DELETE приводить к INSERT, даже есть концепция такая, кажется называется Temporal Database
госпидя, откуда у вас такая каша то в головах?!
Во-первых, большинство реализаций SCD2/Temporal Validity включают в себя апдейт текущей записи и инсерт новой.
Во-вторых, это никоим образом не оптимизация по доступу, т.к. селекты в данном случае становятся на порядки медленнее, а их как раз обычно на порядки больше, чем инсертов/апдейтов/делитов вместе взятых.
7 апр 17, 14:46    [20377851]     Ответить | Цитировать Сообщить модератору
 Re: Почему в Oracle нет vacuum  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9264
dbpatch
... на терабайты в день, в RAM просто не помещаются...

Добавить RAM )))
7 апр 17, 14:48    [20377864]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Oracle Ответить