Published on

June 20, 2018

Исследование сжатия данных в SQL Server

Сжатие данных – это мощная функция в SQL Server, которая может помочь уменьшить размер вашей базы данных и улучшить производительность для нагруженных операций чтения. В этой статье мы рассмотрим концепции и преимущества сжатия данных в SQL Server.

Что такое сжатие данных?

Сжатие данных – это функция, введенная в SQL Server 2008 и более поздних версиях, которая позволяет сжимать таблицы и индексы, что приводит к сокращению требований к хранению. Оно работает путем оптимизации типов данных и устранения избыточных данных на уровне строки или страницы.

В SQL Server существуют два уровня сжатия данных:

  • Сжатие строк: Этот уровень оптимизирует типы данных и уменьшает объем хранилища, необходимого для значений NULL и 0 внутри строк.
  • Сжатие страниц: Этот уровень минимизирует избыточность данных на уровне страницы, что приводит к дополнительным экономиям места.

Преимущества сжатия данных

Внедрение сжатия данных в вашу базу данных SQL Server может принести несколько преимуществ:

  • Экономия места: Сжатие данных может значительно уменьшить размер вашей базы данных, что приводит к экономии затрат на хранение.
  • Улучшенная производительность: Сжатые данные позволяют SQL Server сканировать меньшее количество страниц данных, что приводит к более быстрым операциям чтения.
  • Сокращение операций ввода-вывода: Сжатые данные требуют меньшего количества операций ввода-вывода, что приводит к улучшению общей производительности.

Внедрение сжатия данных

Перед внедрением сжатия данных важно тщательно спланировать и учесть следующие факторы:

  • Выбор таблицы: Определите таблицы, которые больше всего выиграют от сжатия. Таблицы с историческими или редко используемыми данными являются хорошими кандидатами.
  • Влияние на производительность: Сжатие данных может оказывать влияние на операции обновления, так как разжатие страниц для обновлений требует большой вычислительной мощности. Учтите рабочую нагрузку и частоту обновлений в выбранных таблицах.
  • Планирование рабочего пространства: Процесс сжатия может потребовать дополнительного рабочего пространства, что может привести к значительному увеличению размера файла журнала транзакций. Убедитесь, что у вас есть достаточно свободного места.

Для внедрения сжатия данных вы можете использовать оператор ALTER TABLE с опцией DATA_COMPRESSION. Вот пример:

ALTER TABLE [dbo].[TableName] REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE, SORT_IN_TEMPDB = ON, MAXDOP = 8);

Замените [dbo].[TableName] на фактическое имя таблицы, которую вы хотите сжать. Опции SORT_IN_TEMPDB и MAXDOP могут использоваться для улучшения производительности во время процесса сжатия.

Измерение экономии места

SQL Server предоставляет функцию sp_estimate_data_compression_savings для оценки экономии места, которую можно достичь с помощью сжатия данных. Вы можете использовать эту функцию, чтобы определить потенциальные выгоды от сжатия для ваших таблиц. Вот пример:

EXEC sp_estimate_data_compression_savings 'dbo', 'TableName', NULL, NULL, 'PAGE';

Замените ‘dbo’ и ‘TableName’ на соответствующую схему и имена таблиц. Функция предоставит информацию о размере таблицы с текущими настройками сжатия и размере с запрошенными настройками сжатия.

Мониторинг влияния на производительность

При внедрении сжатия данных важно отслеживать влияние на производительность вашей системы. Вы можете использовать динамическую функцию управления sys.dm_db_index_operational_stats для отслеживания событий ожидания, связанных с использованием ЦП и операциями ввода-вывода. Вот пример:

SELECT * FROM sys.dm_db_index_operational_stats (DB_ID(), NULL, NULL, NULL);

Этот запрос предоставит информацию о событиях ожидания, проценте обновления и проценте сканирования для выбранных таблиц. Анализ этих данных поможет вам понять влияние сжатия на использование ЦП и операции ввода-вывода.

Заключение

Сжатие данных – это ценная функция в SQL Server, которая может помочь оптимизировать хранение и улучшить производительность. Тщательный выбор таблиц и мониторинг производительности позволят достичь значительной экономии места и повысить общую эффективность вашей базы данных.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.