В этом сценарии показано, как использовать команды API администрирования SQL для управления сжатием и оптимизации систем хранения данных.
Чтобы сжимать и данные в строках, и простые большие объекты в пространствах баз данных:
- Вы рассматриваете возможность сжатия таблицы rock, поэтому выполняете следующую команду, чтобы проверить, какой объем пространства можно сэкономить в результате сжатия таблицы:
EXECUTE FUNCTION task("table estimate_compression", "rock", "music", "mario");
Вы просматриваете отчет, из которого следует, что можно сэкономить 75% пространства, занимаемого в настоящий момент таблицей rock. Вы принимаете решение сжать таблицу.
- Прежде чем выполнить сжатие данных, вы хотите создать словарь сжатия, который содержит сведения, используемые сервером IBM® Informix для сжатия данных в таблице rock. Выполните следующую команду:
EXECUTE FUNCTION task("table create_dictionary", "rock", "music", "mario");
Если для создания словаря сжатия не используется отдельное действие, сервер Informix создает словарь сжатия автоматически при сжатии данных.
- Вы принимаете решение о сжатии данных в таблице rock и простых больших объектов в пространствах баз данных,
консолидации данных и возврате свободного пространства в пространство базы данных.
Выполните следующую команду:
EXECUTE FUNCTION task("table compress repack shrink", "rock", "music", "mario");
Если вы решили сжимать только данные в строках или только простые большие объекты в пространствах баз данных,
то уточните команду, вставив ключевое слово
rows или
blobs после слова
compress или строки
compress repack shrink. Например:
- Чтобы сжать только данные строк, задайте:
EXECUTE FUNCTION task("table compress rows","rock","music","mario");
- Чтобы сжать только данные строк, а затем осуществить перераспределение и сокращение данных, задайте:
EXECUTE FUNCTION task("table compress repack shrink rows",
"rock","music","mario";
- Чтобы сжать только большие объекты в пространстве баз данных, задайте:
EXECUTE FUNCTION task("table compress blobs","rock","music","mario");
После сжатия данных в существующих строках и простых больших объектов сервер
Informix консолидирует свободное пространство в конце таблицы,
а затем удаляет свободное пространство из таблицы, возвращая его в пространство базы данных.
Если окажется, что простые большие объекты или строки /*
не уменьшаются при сжатии, сервер баз данных не сжимает их.
- Предположим, что надо распаковать данные. Выполните следующую команду:
EXECUTE FUNCTION task("table uncompress","rock","music","mario");
- Вы хотите удалить словарь сжатия.
- Убедитесь, что для Enterprise Replication словарь не нужен.
Не удаляйте словари сжатия, относящиеся к распакованным или удаленным таблицам и фрагментам таблиц, если они нужны для
Enterprise Replication.
- Произведите архивирование пространства базы данных, в котором содержится таблица или фрагмент со словарем сжатия.
- Выполните следующую команду:
EXECUTE FUNCTION task("table purge_dictionary", "rock", "music", "mario");
Сжатие и распаковка данных
и простых больших объектов в пространствах баз данных
во фрагментах таблиц выполняется так же, как сжатие и распаковка данных
и простых больших объектов в пространствах баз данных
в строках, но при этом выполняемые команды имеют следующий формат:
EXECUTE FUNCTION task("fragment аргументы_сжатия", "список_номраз");
Чтобы консолидировать свободное пространство или выполнить его возврат без сжатия или распаковки, можно выполнить команду, которая
указывает, что сервер должен осуществить перераспределение, сокращение либо перераспределение и сокращение.