
Оптимизация структуры хранения данных: удаление областей хранения без остановки системы
Эффективное управление структурой базы данных является ключевым фактором для поддержания её производительности и удовлетворения потребностей пользователей. Со временем могут возникнуть требования к оптимизации хранения данных или повышению производительности, что может потребовать изменения структуры базы данных.
В случае снижения производительности системы хранения данных администратор базы данных может принять решение о перемещении данных в новую область хранения на другом физическом устройстве, а затем удалить старую область. При этом база данных может продолжать функционировать в режиме онлайн, что обеспечивает более высокую доступность данных. В процессе удаления областей хранения база данных остаётся доступной для пользователей и процессов, что позволяет избежать простоев в обслуживании.
До выхода версии OpenEdge 12.8 LTS удаление областей хранения (PROSTRCT REMOVE) было возможно только при полной остановке базы данных, что приводило к необходимости плановых простоев. Введение нового квалификатора PROSTRCT REMOVEONLINE позволяет администраторам базы данных освобождать дисковое пространство без остановки системы. Это обеспечивает непрерывную работу базы данных и позволяет клиентам оптимизировать использование дискового пространства без ожидания плановых периодов обслуживания.
Применение PROSTRCT REMOVEONLINE особенно важно при развёртывании крупных баз данных, так как позволяет поддерживать высокую доступность системы даже в условиях многопользовательского режима работы. Таким образом, данная функция значительно повышает эффективность управления базами данных и обеспечивает непрерывность бизнес-процессов.
Описание утилиты
Квалификатор PROSTRCT REMOVEONLINE предназначен для удаления областей хранения данных или экстентов, включая зашифрованные области и зоны CDC, из функционирующей базы данных. Операция должна выполняться в отношении областей хранения, не содержащих объектов.
Синтаксис
prostrct removeonline db-name extent-token area-name [-allExtents] -silent
- db-name, идентифицирует базу данных, из которой планируется удалить область хранения или экстент.
- extent-token, указывает тип удаляемого экстента. Для данной утилиты единственным допустимым значением токена является d.
- area-name, определяет название области хранения, подлежащей удалению.
- -allExtents, инициирует удаление всех экстентов и записей, связанных с указанной областью. Если этот параметр не указан, утилита удаляет только последний экстент области.
- -silent, деактивирует запросы с инструкциями, которые могут быть выданы после включения функции After-imaging.
Аналогично функции PROUTIL TRUNCATE AREA, функция PROSTRCT REMOVEONLINE сбрасывает верхнюю границу использованных блоков в области хранения (high-water mark) обратно к началу области. Этот процесс освобождает всё пространство в области хранения для последующего повторного использования.
Примеры
В случае, если область данных с идентификатором Table Area1 включает в себя несколько экстентов, которые в настоящее время не задействованы, для их удаления и ликвидации самой области рекомендуется выполнить следующую команду:
prostrct removeonline sports2020 d 'Table Area1' -allExtents
Для удаления экстента в базе данных источника репликации (Source) используется следующая команда:
prostrct removeonline sourcedb d area2
В случае, если операция removeonline в исходной базе данных (Source) инициирует удаление определенной области данных, а в целевой базе данных (Target) возникает временной интервал ожидания, рекомендуется выполнить следующую команду:
prostrct removeonline targetdb d area2
Примечания
- Экстент, содержащий какие-либо данные, не может быть удалён.
- Утилита PROSTRCT REMOVEONLINE ожидает завершения закрытия удаляемых файлов подключенными процессами и предлагает повторно выполнить проверку. Для продолжения необходимо ввести символ y. Скорость проверки можно увеличить, установив положительное значение параметра dbnotifytime.
- Для подтверждения успешного удаления и обновления файла описания структуры рекомендуется использовать утилиту PROSTRCT в сочетании с квалификатором LIST.
- Удаление конечного экстента с помощью PROSTRCT REMOVEONLINE не изменяет тип предыдущего экстента (фиксированный или переменный).
- Физические экстенты исходной (Source) и целевой (Target) баз данных могут различаться. Удаление экстента из исходной базы данных не требует удаления соответствующего экстента в целевой базе данных, поскольку целевая база данных может содержать один крупный экстент для области вместо множества меньших экстентов в исходной базе данных. Однако для удаления всей области из исходной базы данных необходимо удалить соответствующую область из целевых баз данных.
- Утилита PROSTRCT REMOVEONLINE не поддерживает удаление файлов AI (After-Image) и BI (Before-Image). Для удаления этих типов файлов необходимо остановить базу данных и воспользоваться утилитой PROSTRCT REMOVE.
Есть вопрос? Спросите...
Для отправки комментария вам необходимо авторизоваться.
2 Комментария
Написано: “Экстент, содержащий какие-либо данные, не может быть удалён.”
Достаточно удалить только записи из таблиц в удаляемой области или надо удалить описания этих таблиц тоже?
Надо удалить или переместить в другую область описание таблиц. Для этого можно использовать команды PROUTIL TABLEMOVE, PROUTIL TABLEMOVE TRUNCATE и PROUTIL INDEXMOVE.