powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Умеет ли PostgreSQL удалять 20 миллионов записей?
8 сообщений из 8, страница 1 из 1
Умеет ли PostgreSQL удалять 20 миллионов записей?
    #39753572
eog_proon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые Postgres-гуру,

Прошу помочь с проблемой. Есть база, есть в ней таблица, которую требуется периодически чистить. Если чистить аккуратно, то проблем не возникает.
Однако, возможны ситуации, когда по недосмотру задание очистки перестало запускаться, и заметили мы это поздно, когда в таблице скопилось число записей, которое там не должно скапливаться. Нужно переписать скрипт очистки так, чтобы за ночь худо-бедно, но удалились много (несколько миллионов) записей.
Вдохновленный благородными планами, я начал писать скрипт на Python, который запускает хранимую процедуру удаления некой порции (скажем, 32К) записей, после чего выдает COMMIT, потом удаляет следующую порцию, COMMIT, и так далее, пока все записи, которые нужно удалять, не будут удалены.
Отметим: удалить следует не все записи, и вполне возможна ситуация, когда количества удаляемых и сохраняемых записей могут быть примерно одинаковы. Так что варианты с TRUNCATE или перекачкой в новую таблицу и DROP'ом старой не пройдут.

В начале я стал любоваться на то, как расправляется написанный скрипт с порциями, докладывая, что время, пошедшее на порцию, равно 2..4 сек., но потом после 400-500 порций время стало расти в 10 и более раз, и к концу процесса возросло в 100 раз. Это означает примерно следующее: после приблизительно 13-14 миллионов записей производительность резко упала. Средний размер записи ~250 байт.

Опыта в настройке и/или DBA-сопровождению postgresql почти нет. Поковырялся в параметрах postgresql.conf, изменяя значения памяти, вынес директорию stats_temp_directory на RAM-диск. Ситуация качественно почти не меняется. Чувства подсказывают, что что-то не то с настройкой WAL и сбросом его сегментов в файлы БД.

Не подскажете, что может быть причиной таких тормозов? Куда копать? Что читать...

Заранее благодарен.
...
Рейтинг: 0 / 0
Умеет ли PostgreSQL удалять 20 миллионов записей?
    #39753651
jan2ary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eog_proon,

Определение таблиц, код процедур в студию.
Первое предположение: удаляешь полньім сканированием, поєтому найти первьіе 32к записей бьістрее, чем последующие (2-й раз надо просмотреть 2*32к записей, n-ьій раз - n*32к записей, ведь удаленньіе строки на самом деле никуда не деваются, а просто отмечаются удаленньіми).
...
Рейтинг: 0 / 0
Умеет ли PostgreSQL удалять 20 миллионов записей?
    #39753665
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ставлю на то, что ТС-а спасет VACUUM.
...
Рейтинг: 0 / 0
Умеет ли PostgreSQL удалять 20 миллионов записей?
    #39754947
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для истории решения проблемы:
1) Автовакуум не помогал.
2) Вакуум не помог (Вакуум был настроен на каждые 50 порций)
3) Оказалось, что в таблице есть bytea-поле
4) Переделали на vacuum full, (каждые 50 порций), замедление в конце ушло.
...
Рейтинг: 0 / 0
Умеет ли PostgreSQL удалять 20 миллионов записей?
    #39754962
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно. С одной стороны
авторТак что варианты с TRUNCATE или перекачкой в новую таблицу и DROP'ом старой не пройдут.
с другой -- vaccum full, который, по данным моей разведки, делает именно перекачку из одного места в другое.
...
Рейтинг: 0 / 0
Умеет ли PostgreSQL удалять 20 миллионов записей?
    #39755010
iriswind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор. плюс индексы еще не забудьте
...
Рейтинг: 0 / 0
Умеет ли PostgreSQL удалять 20 миллионов записей?
    #39755011
iriswind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. SakИнтересно. С одной стороны
авторТак что варианты с TRUNCATE или перекачкой в новую таблицу и DROP'ом старой не пройдут.
с другой -- vaccum full, который, по данным моей разведки, делает именно перекачку из одного места в другое.
плюс индексы
...
Рейтинг: 0 / 0
Умеет ли PostgreSQL удалять 20 миллионов записей?
    #39755506
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. SakСтавлю на то, что ТС-а спасет VACUUM.
или партицирование
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Умеет ли PostgreSQL удалять 20 миллионов записей?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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