powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Удаление пустых строк из БД
16 сообщений из 16, страница 1 из 1
Удаление пустых строк из БД
    #34242167
Serdgg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как можно удалить из БД (из всех таблиц) все пустые строки?
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34242254
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SerdggКак можно удалить из БД (из всех таблиц) все пустые строки?
"А как это?" (с) Л. Поддерев'янскьий.
Например написав хранимую процедуру, которая получает имена всех таблиц и для каждой таблицы получает список колонок, и затем формирует для каждой таблицы строку вида
Код: plaintext
1.
DELETE FROM table_name WHERE (field1 IS NULL) AND (field2 IS NULL) ...
и ее выполняет.
Имена таблиц и полей - читаем мануал недалеко от таблицы и колонки
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34242420
Serdgg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я удалял данные из таблиц за период такой командой:
Код: plaintext
DELETE FROM table_name WHERE date_period < '01.01.06';

размер дампа уменьшился, а развернутая база сколько занимала, столько и занимает. Может быть нужно VACUUM применить?
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34242491
alex_v13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лучше VACUUM ANALYZE, а если нагрузка позволяет, то VACUUM FULL ANALYZE.
Размер базы сильно не уменьшиться, зато расти будет медленне, за счет использования перераспределеного места.
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34242712
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serdggя удалял данные из таблиц за период такой командой:
Код: plaintext
DELETE FROM table_name WHERE date_period < '01.01.06';

Ну, вполне нормально :)

Serdgg
размер дампа уменьшился, а развернутая база сколько занимала, столько и занимает. Может быть нужно VACUUM применить?
Не просто VACUUM, а VACUUM FULL. Просто вакуум - просто освобождает место логически (на винте место не увеличится). Ну и сразу лучше делать VACUUM FULL ANALYZE.
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34242804
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а смысл освобождать место физически, если потом база снова распухнет?
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34242971
Serdgg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.....и правда, не уменьшилось место. Непонятно, отрезал половину базы, а она не уменьшилась. VACUUM FULL ANALYZE не помогает, может есть ещё какой способ, чтобы уменьшить физически занимаемое пространство ?
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34242986
Serdgg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
st_sergа смысл освобождать место физически, если потом база снова распухнет?

Когда она ещё распухнет до такого же состояния.....а толпа бэкапов БД уже сжирает всё пространство на бэкап-сервере
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34243003
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_sergа смысл освобождать место физически, если потом база снова распухнет?
Пример. У меня есть БД. В ней хранятся картинки. Много. Очень. Около 4*10^6. И каждая по метру. И тут настяет счастливый момент, когда ну его все нафик и остается только 10^3. Ну и вопрос, нафига мне на винте стока занятого места? И Постгресу его шерстить нафига? Т.е. если страницы будут полностью пустые - тогда конечно нафиг не нужно шерстить, а если нет? Вот где-то здесь и возникает VACUUM FULL ANALYZE.
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34243019
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serdgg.....и правда, не уменьшилось место. Непонятно, отрезал половину базы, а она не уменьшилась. VACUUM FULL ANALYZE не помогает, может есть ещё какой способ, чтобы уменьшить физически занимаемое пространство ?
Ну варианта 3.
1. Полбазы практически не занимали места.
2. Данные не удалились (может условие WHERE неправильное, коммит не сделал или еще чего - ХЗ) :)
3. Что-то глюкнуло :)

Проверить легко - делаем дамп, и востанавливаем его. Если размеры файлов на винте остались те же, то или 1 или 2. Если нет - то ближе к 3.
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34243044
Serdgg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я так и проверил. Раньше база занимала 11 гектар в развернутом состоянии (за 3 года). Убил "старые" 1,5 года архив вместо 1,5 гектар стал занимать 700 метров. Восстановил на другом компе эту БД - она там занимает 12 гектар (с учетом уже добавленных данных)......почему?
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34243084
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey Daeron st_sergа смысл освобождать место физически, если потом база снова распухнет?...
Т.е. если страницы будут полностью пустые - тогда конечно нафиг не нужно шерстить, а если нет? Вот где-то здесь и возникает VACUUM FULL ANALYZE.
а как сильно это влияло на производительность (VACUUM vs VACUUM FULL в вашем случае)? Всымсле произовдительность при простом вакууме и при полном.
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34243915
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_serg
а как сильно это влияло на производительность (VACUUM vs VACUUM FULL в вашем случае)? Всымсле произовдительность при простом вакууме и при полном.
К сожалению такого замера не производил :( Делал сразу FULL ANALYZE. Без него - вообще торба была полная. В следующий раз попробую сделать замеры. + у меня удалаялось по дате, т.е. страницы освобождались полностью.

ЗЫ Т.е. наверно стоит считать мое утверждение о НУЖНОСТИ скорее в теории.
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34244927
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serdggя так и проверил. Раньше база занимала 11 гектар в развернутом состоянии (за 3 года). Убил "старые" 1,5 года архив вместо 1,5 гектар стал занимать 700 метров. Восстановил на другом компе эту БД - она там занимает 12 гектар (с учетом уже добавленных данных)......почему?
Ээээ. Ну, чудес не бывает, есть непонимание происходящего.
Попробую сформулировать происходящее:
1. Есть БД за 3 года, файлы физически занимают на винте 11G, pg_dump базы = 1.5G.
2. Проводим удаление данных за 1.5 года. Файлы физически занимают 11G, pg_dump = 700M.
3. Разворачиваем 700М (т.е. новый) дамп на другой машине, файлы БД занимают физически 12G.
Версии PG не меняются, дампы разварачиваются нормально, данных (старых) в новоразвернутой БД нет?
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34245535
Serdgg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrey Daeron
Версии PG не меняются, дампы разварачиваются нормально, данных (старых) в новоразвернутой БД нет?
1. Все операции производились на одном сервере (PG 7.3)
2. Удалялись все записи старше 01.01.06 с помощью команды DELETE из всех таблиц.
3. Первоначальный размер базы занимал 11 гиг в развернутом виде и 1,5 гига в архиве.
4. После удаления данных их в таблице нет, самая старшая запись - в любой таблице 01.01.06 (был один хвост, но после его зачистки ничего не поменялось и повторной процедуры - база уменьшилась на пару килобайт)
5. В итоге имеем архив на 700 метров или в развернутом виде 11 гигов с копейками ( эти копейки набежали уже после того, как был зафиксирован размер БД за 3 года)
Последовательность действий такая: Удаление записей старше 01.01.06(DELETE FROM...) - Бэкап - Удаление БД (DROP) - восстановление БД - VACUUM FULL ANALYZE - Смотрим размер БД.

P.S. при восстановлении БД выписывал такие строки:
авторСоздание таблицы для перекрестных ссылок среди больших объектов.
Число восстановленных больших объектов 6
...
Рейтинг: 0 / 0
Удаление пустых строк из БД
    #34246807
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда. Есть ощущение что информация неполна. Может какие таблицы занимают основной объем (например индексами или еще чем), или архив жмется круто. Нужно ковырятся. Может весь объем занимают
автор
Создание таблицы для перекрестных ссылок среди больших объектов.
Число восстановленных больших объектов 6

Ковырятся надобныть.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Удаление пустых строк из БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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