Безопасно ли удалять раздел сразу после его одновременного отсоединения?

Я пытаюсь автоматизировать управление разделами в своей базе данных psql (версия 15). Я хотел бы удалить старые разделы, чтобы освободить место в базе данных. Для этого я планирую отсоединить его с помощью ключевого слова CONCURRENTLY, чтобы мне не требовалась блокировка ACCESS EXCLUSIVE для секционированной таблицы.

После одновременного запуска моего отсоединяемого раздела безопасно ли удалить таблицу сразу после ? Или мне следует подождать, пока будет выполнено одновременное отсоединение? Если мне нужно это сделать, как я могу?

Спасибо

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

DROP TABLE requires taking an ACCESS EXCLUSIVE lock on the parent table. Пока раздел является частью родительской таблицы, вы не можете удалить его без блокировки ACCESS EXCLUSIVE. Так что да, придется подождать, пока отсоединение пройдет успешно
Frank Heikens 09.04.2024 18:06

Хорошо спасибо. И как проверить успешность отсоединения? Нужно ли мне проводить какое-то голосование? Каковы лучшие практики при попытке автоматизировать такого рода задачи?

Rémi Pradal 09.04.2024 18:31

@RémiPradal Поскольку раздел блокируется исключительно операцией отсоединения, я думаю, что ваша попытка удаления зависнет и будет ждать сама по себе, пока эта блокировка не будет снята. Не нужно проводить опрос.

Zegarek 09.04.2024 19:45
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
273
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

ALTER TABLE ... DETACH PARTITION CONCURRENTLY завершается, как только заканчивается это утверждение. Поскольку DROP TABLE требует блокировки ACCESS EXCLUSIVE, попытка удалить раздел до того, как ALTER TABLE ... DETACH PARTITION CONCURRENTLY будет выполнена, приведет к блокировке DROP TABLE.

Поэтому просто подождите, пока ALTER TABLE ... DETACH PARTITION CONCURRENTLY не завершится, а затем запустите DROP TABLE, чтобы избавиться от раздела.

Другие вопросы по теме

Как запросить таблицу, имя которой построено на основе результата функции PL/pgSQL?
Распределите список положительных чисел на желаемое количество наборов, стараясь, чтобы суммы между ними были как можно ближе
Как суммировать количество заказов для каждого номера детали с текущей даты до текущей даты — времени выполнения заказа?
MariaDB не выбирает в соответствии с разделом многораздельной таблицы
Можно ли использовать секционирование для запросов LIKE в Postgres?
Стратегия разделов/архивов Oracle для таблицы измерений типа 2
Запрос Postgres секционированной таблицы, указывающей на сторонние обработчики данных, во много раз медленнее, чем прямой запрос fdw
Имеет ли значение порядок столбца перед разделением
Разделение по столбцам ID на основе диапазона значений ID
Как в Дафни утверждать, что если все элементы в последовательности меньше некоторого значения, то это же верно и для перестановки этой последовательности?