всеми полями, помечает старую, и далее удаяет ее. Это огромный оверхед. В оракле этого нет. Есть что возразить ?
В орвкле это, разумеется, есть.
В оракле 1 update создаёт целый BLOCK_SIZE оверхед на каждую стороку! Причём при изменении строкии И всех индексов, у вас будет N*BLOCK_SIZE оверхед.
Что такое block size оверхед? И почему вы это называете оверхедом?
Это есть вообще во всех ACID-базах, дажэ в блокировочниках. Write amplificarion можэт быть разный (да и то — вопрос там между x4 и x6 и в какую сторону усреднение) — но необходимость хранить старую строку никуда не девается.
Не в одном операторе;)
дорогой мой коллега! в оракле версионируются блоки, целиком. размером BLOCK_SIZE. они летят в UNDO_SEGMENT. причём любые блоки — таблицы, индксы, материализованные представления — всё! в постгресе тоже есть UNDO, внезаппно. только он логический и действует только для таблиц. и храниться в самой таблице, а не в отдельном сегменте.
Но в oracle он внезапно освобождается 😂, не будем короче флудить
У нас он тожэ освобождается. Примерно тогда жэ в типичном сцэнарии.
Ну вы сравнили. Нет, архитектура анду и out-of-place update, это радикально разные вещи. Апдейт 2-3-100 строк лежащих в одном блоке - затронет только один блок в оракле. В ПГ - как попадется.
С одной только разницей, что при активных изменениях автоваккум приходит не сразу, а к этому моменту таблица уже может разростись. И в меньшить её размен автовакуум уже не может. Нужен полный вакуум.. 🤷♂️
Обсуждают сегодня