Новость из категории: Информация

SQL Server. Диета для баз данных: применение сжатия типа ROW

Содержание:
1. Сжатие в операционной системе;
2. Сжатие строк и реализация сжатия типа ROW;
3. Применение сжатия типа ROW (Вы читаете данный раздел).
SQL Server. Диета для баз данных: применение сжатия типа ROW

Применяемый тип сжатия — свойство каждой системы. В действительности это свойство каждого раздела в каждой таблице и индексе. Его можно применить при создании таблицы, но по нашему опыту оно чаше применяется к уже заполненной таблице.

SQL Server. Диета для баз данных: применение сжатия типа ROW
Таблица Sales.OrderDetails из тестовой базы данных AdventureWorks

Важно понять, когда происходит сжатие. Например, рассмотрим таблицу Sales.OrderDetails из тестовой базы данных AdventureWorks (см. скриншот выше).

SQL Server. Диета для баз данных: применение сжатия типа ROW
Создание и работа с таблицей tempdb

Основываясь на типах данных, можно сказать, что эта таблица — подходящий кандидат для уменьшения размера с использованием сжатия типа ROW. Вместо внесения изменений в таблицу AdventureWorks создадим другую таблицу в tempdb и будем работать с ней (см. код выше).

SQL Server. Диета для баз данных: применение сжатия типа ROW
Результаты сжатия

Эта процедура не проверяет всю таблицу, а переносит часть строк таблицы в tempdb, а затем сжимает их с помощью запрошенной схемы и выдает отчет о результатах. Результаты экстраполируются на всю таблицу на основе выборки, и «реальные» результаты могут отличаться. Но, как мы обнаружили, это полезный первый шаг (см. скриншот выше).

В данном случае тестовый размер был, в сущности, всей базой данных. Сообщается о сокращении размера с 6,9 Мбайт до 3,7 Мбайт, или на 46%. Предполагается, что, если применяется сжатие ROW, размер таблицы составит 54% первоначального размера. Проверим текущий размер таблицы:
EXEC sp_spaceused N'dbo.SalesOrderDetail';
GO

SQL Server. Диета для баз данных: применение сжатия типа ROW
Текущий размер таблицы

Результат показан на скриншоте выше.

А теперь внесем изменения:
ALTER TABLE dbo.SalesOrderDetail
REBUILD WITH (DATA_COMPRESSION = ROW);
GO

EXEC sp_spaceused N'dbo.SalesOrderDetail';
GO

SQL Server. Диета для баз данных: применение сжатия типа ROW
Размер таблицы после внесения изменений

Результат — на скриншоте выше.

Размер равен 3,9 Мбайт; теперь размер таблицы составляет 56% первоначального размера 6,9 Мбайт.

SQL Server. Диета для баз данных: применение сжатия типа ROW

Результаты первого этапа диеты для баз данных

Для нашего клиента, чью базу данных нужно было «посадить на диету», применив сжатие типа ROW ко всем таблицам, было достигнуто уменьшение размера всей базы данных с 3,8 Тбайт до 2,6 Тбайт. Система клиента полностью ориентирована на ввод-вывод, поэтому неудивительно, что производительность заметно повысилась.

Выгодно ли применять сжатие типа ROW ко всем таблицам? Мне пока не приходилось встречать таблицу, для которой сжатие типа ROW приносило что-либо, кроме пользы. Для пользователей редакции Enterprise Edition оптимальным будет выбираемый по умолчанию режим для таблиц на диске.

SQL Server. Диета для баз данных: применение сжатия типа ROW

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

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх