powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как правильно удалить много записей
9 сообщений из 9, страница 1 из 1
Как правильно удалить много записей
    #40102861
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем дня.
Подскажите какой запрос будет оптимален для удаления 100 млн записей из таблицы
кейс таков есть таблица А и таблица Б
в таблице Б лежат id_А таблицы А
нужно выбрать все id_A из таблицы Б и удалить все записи с такими идентификаторами из таблицы А

Код: plsql
1.
delete from А  where id in (select  distinct а_id from Б);


такой запрос у меня выполняется уже часов 6 и никак не выполнится до сих пор
...
Рейтинг: 0 / 0
Как правильно удалить много записей
    #40102886
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
localhost8080
Доброго всем дня.
Подскажите какой запрос будет оптимален для удаления 100 млн записей из таблицы
кейс таков есть таблица А и таблица Б
в таблице Б лежат id_А таблицы А
нужно выбрать все id_A из таблицы Б и удалить все записи с такими идентификаторами из таблицы А

Код: plsql
1.
delete from А  where id in (select  distinct а_id from Б);


такой запрос у меня выполняется уже часов 6 и никак не выполнится до сих пор


1)distinct лишний и только всё запутывает и сильно замедляет

2)покажите explain (analyze,costs,buffers,timing) для запроса
Код: sql
1.
delete from А  where id in (select а_id from Б LIMIT 1);



дальше умножьте это на 100M и это будет некоторая оценка сверху сколько времени вам надо...
и может покажет где у вас ещё проблемы есть типа непроиндексированных FK

если у вас база на медленных дисках то может и дольше удаляться.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Как правильно удалить много записей
    #40102887
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk

1)distinct лишний и только всё запутывает и сильно замедляет


а не будет конфлитка,так как таблица Б cодержит дубликаты id_A?
...
Рейтинг: 0 / 0
Как правильно удалить много записей
    #40102888
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,
спрошу еще такой вопрос сразу
я выполнял удаление в рамках транзакции

Код: plsql
1.
begin transaction isolation level READ UNCOMMITTED ;


потом у меня упало соединение( я конечусь к серверу по ssh)
после этого я перезапустил сервер постгрес( он в докере крутится)
и после этого у меня там видимо что то пошло не так
сейчас пытаюсь просто сделать vacuum таблицы А и мне выдает такую ошибку

Код: plsql
1.
 ERROR: could not resize shared memory segment "/PostgreSQL.897298480" to 1073812096 bytes: No space left on device
...
Рейтинг: 0 / 0
Как правильно удалить много записей
    #40102891
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
localhost8080
Maxim Boguk,
спрошу еще такой вопрос сразу
я выполнял удаление в рамках транзакции

Код: plsql
1.
begin transaction isolation level READ UNCOMMITTED ;


потом у меня упало соединение( я конечусь к серверу по ssh)
после этого я перезапустил сервер постгрес( он в докере крутится)
и после этого у меня там видимо что то пошло не так
сейчас пытаюсь просто сделать vacuum таблицы А и мне выдает такую ошибку

Код: plsql
1.
 ERROR: could not resize shared memory segment "/PostgreSQL.897298480" to 1073812096 bytes: No space left on device



Не делайте постгрес в докере... а если делаете - умейте его там чинить-настраивать.
По докеру ничего подсказать не могу.
У вас там база то на внешнем volume я надеюсь?

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Как правильно удалить много записей
    #40102894
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk
localhost8080
Maxim Boguk,
спрошу еще такой вопрос сразу
я выполнял удаление в рамках транзакции

Код: plsql
1.
begin transaction isolation level READ UNCOMMITTED ;


потом у меня упало соединение( я конечусь к серверу по ssh)
после этого я перезапустил сервер постгрес( он в докере крутится)
и после этого у меня там видимо что то пошло не так
сейчас пытаюсь просто сделать vacuum таблицы А и мне выдает такую ошибку

Код: plsql
1.
 ERROR: could not resize shared memory segment "/PostgreSQL.897298480" to 1073812096 bytes: No space left on device



Не делайте постгрес в докере... а если делаете - умейте его там чинить-настраивать.
По докеру ничего подсказать не могу.
У вас там база то на внешнем volume я надеюсь?

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru

да volume имеется
...
Рейтинг: 0 / 0
Как правильно удалить много записей
    #40102897
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,
причем вот эта проблема только при запросе к таблице из которой я в рамках транзакции пытался удалить эти записи
...
Рейтинг: 0 / 0
Как правильно удалить много записей
    #40103154
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А сколько всего записей в удаляемой таблице?
...
Рейтинг: 0 / 0
Как правильно удалить много записей
    #40103155
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
localhost8080
Maxim Boguk,
спрошу еще такой вопрос сразу
я выполнял удаление в рамках транзакции

Код: plsql
1.
begin transaction isolation level READ UNCOMMITTED ;


потом у меня упало соединение( я конечусь к серверу по ssh)
после этого я перезапустил сервер постгрес( он в докере крутится)
и после этого у меня там видимо что то пошло не так
сейчас пытаюсь просто сделать vacuum таблицы А и мне выдает такую ошибку

Код: plsql
1.
 ERROR: could not resize shared memory segment "/PostgreSQL.897298480" to 1073812096 bytes: No space left on device



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


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