Введение: SQLServer2005SP2 предоставляет нам функцию vardecimal. Эта функция позволяет сохранять исходные десятичные данные фиксированной длины в файле данных в формате переменной длины. Говорят, что эта функция может сэкономить место для хранилища данных, и SQLServer2008 таковым является. В связи с этим была улучшена функция сжатия данных.
Функция сжатия данных в SQL Server впервые появилась в SQL Server 2005. В версии Enterprise и Development был добавлен новый формат хранения, называемый vardecimal. Эта функция может влиять на десятичные и числовые поля. Если таблицы в базе данных содержат данные десятичных и числовых типов, пользователи могут использовать формат хранения vardecimal, чтобы уменьшить размер базы данных. Стоит отметить, что объем пространства, которое можно сэкономить, зависит от того, сколько столбцов десятичных или числовых данных содержит база данных, распределения данных и размера таблицы.
Используйте сжатие данных
Именно эта функция сжатия данных стала еще одной новой функцией SQL Server 2008: сжатие данных. Используя эту функцию, вы можете уменьшить размер подмножеств таблиц данных, индексов и разделов. Но зачем эту функцию, существовавшую ранее в SQL Server 2005, улучшать в версии системы нового поколения? В рыночной среде, где стоимость хранения данных постоянно снижается, какую пользу может принести предприятиям технология сжатия данных?
Хотя затраты на хранение больше не являются чувствительным фактором, на который обращают внимание предприятия, это не означает, что размер базы данных не будет влиять на эффективность операций предприятия, поскольку помимо влияния на затраты на хранение размер базы данных также во многом зависит от управления. затраты и проблемы с производительностью.
Прежде всего, поскольку необходимо выполнить резервное копирование базы данных, чем больше размер базы данных, тем дольше будет время резервного копирования, а также возрастет стоимость оборудования для резервного копирования. Еще одна стоимость управления — это стоимость обслуживания базы данных. С точки зрения производительности, когда SQL Server сканирует диск для чтения данных, он считывает данные в единицах страниц данных. Поэтому, если страница данных содержит больше строк данных, тем больше данных SQL Server получит за одну страницу данных. будет больше, что также приведет к повышению производительности.
По сравнению со сжатыми данными vardecimal в SQL Server2005SP2, тестовые данные, выпущенные в настоящее время в SQLServer2008, используют новую технологию сжатия данных для достижения более высокой скорости хранения в сочетании с увеличенным объемом памяти для аварийного восстановления на предприятиях. Все это SQLServer2008. У этого есть свои преимущества. эта новая функция.
Страница 2: Два режима сжатия
Поняв реальные преимущества сжатия данных, вы почувствуете проникновение этой концепции. С помощью сжатия данных сокращаются затраты на хранение, повышается производительность запросов, сокращается количество операций ввода-вывода и увеличивается частота кликов по буферизации. Видно, что эта функция по-прежнему очень эффективна в процессе приложения. В SQL Server 2008 существует два метода сжатия данных, а именно сжатие строк и сжатие страниц. Вот краткое сравнение этих двух типов сжатия данных.
Выбор типа сжатия в мастере сжатия данных
Сжатие строк. Сжатие строк может хранить типы фиксированной длины как типы хранения переменной длины. Например, столбец char(100), хранящийся в формате хранения переменной длины, будет использовать только данные, определенные объемом хранилища. Сохраненному «SQLServer2008» после сжатия необходимо сохранить только 15 символов вместо всех 100 символов, что позволяет сэкономить 85% дискового пространства. Это расширение идеи формата хранения vardecimal, представленного в SQLServer2005ServicePack2. Следует также отметить, что этот режим сжатия оптимизирует значения NULL и 0 всех типов данных, чтобы они не занимали никаких байтов.
Хотя сжатие данных SQLServer2008 расширяет эту функциональность, обрабатываются все типы данных фиксированной длины, включая целочисленные, символьные и плавающие. Теперь данные хранятся не в байтах фиксированного размера, а в минимально необходимых байтах, что можно выполнить, просто включив сжатие строк. Однако сжатие строк не может обрабатывать типы данных XML, BLOB и MAX.
Режим сжатия страниц. Эта функция сжатия, основанная на сжатии строк, сводит к минимуму сохраняемые избыточные данные, сохраняя одни и те же байты событий на странице только один раз. Таблицы и индексы сжимаются с использованием сжатия страниц. Помимо сжатия строк, также используется сжатие префиксов и сжатие по словарю.
Сжатие данных уменьшит размер вашей таблицы или показателей индекса. Лучше всего сначала оценить экономию места после сжатия. Каждая страница сжимается индивидуально, внутри страницы также сохраняются префиксы и словари. Поскольку страница является атомарной единицей выделения памяти, нет смысла сжимать половину страницы в четверть страницы. Поэтому процесс сжатия начнется только тогда, когда содержимое страницы будет почти заполнено.
При использовании сжатия строк и страниц также возникает компромисс в производительности, поскольку загрузка ЦП возрастет, но использование ввода-вывода и объем памяти снизятся. Но все параметры сжатия могут стать эксклюзивными для SQLServer2008 Enterprise Edition.
Страница 3: Как использовать сжатие данных
Приложение (как использовать сжатие данных):
(1) Включить сжатие строк
Если мы хотим включить сжатие строк в указанной таблице, мы можем выполнить следующий оператор:
CREATE TABLE Alpha (col1 int, col2 char (1000))
С (DATA_COMPRESSION = СТРОКА)
(2) Включить сжатие страниц.
Если мы хотим включить сжатие для указанного раздела, мы можем выполнить следующий оператор:
CREATE TABLE Alpha_Partition (col1 int, col2 char (1000))
ONPartitionScheme (столбец 1)
С
(DATA_COMPRESSION = СТРАНИЦА ВКЛ.)
РАЗДЕЛЫ(1-3)
(3)Изменить сжатие
Если вы хотите изменить существующий индекс для использования сжатия, выполните следующую инструкцию:
ИЗМЕНИТЬ ИНДЕКС Collndx НА Alpha REBUILD
С (DATA_C0MPRESSION=СТРАНИЦА)
ИЗМЕНИТЬ ИНДЕКС Collndx НА Alpha REBUILD
раздел=2
С (DATA_COMPRESSION=СТРАНИЦА)
Параметры сжатия в SQL Server 2008 можно установить с помощью Option при создании таблицы или индекса, например:
СОЗДАТЬ ТАБЛИЦУ TestTable (col1 int,col2varchar(200))WITH(DATA_COMPRESSION = ROW);
Если вам нужно изменить параметры сжатия раздела, вы можете использовать следующий оператор:
ALTER TABLE TestTable REBUILD PARTITION = 1 With(DATACOMPRESSION=PAGE);
Если вам нужно установить разные параметры сжатия для каждого раздела многораздельной таблицы, вы можете использовать следующий оператор: (SQLServer2008 может использовать разные параметры сжатия для разных разделов. Это очень важно для приложений хранилища данных, поскольку таблица фактов хранилища данных Обычно существует один или несколько «горячих» разделов, и данные в этих разделах часто необходимо обновлять. Чтобы избежать сжатия данных, вызывающего дополнительную нагрузку на обработку обновлений данных в этих разделах, вы можете отключить опцию сжатия для этих разделов.
CREATE TABLE PartitionedTable (col1 int, col2varchar(200))
НА PS1 (col1)
С (DATA_COMPRESSION = СТРОКА НА РАЗДЕЛАХ(1),
DATA_COMPRESSION = СТРАНИЦА НА РАЗДЕЛЕ (от 2 до 4));
Если вы устанавливаете параметры сжатия для индекса, вы можете использовать:
CREATE INDEX IX_TestTable_Col1 ONTestTable(Col1)WITH(DATA_COMPRESSION = ROW);
Если вы хотите изменить параметры сжатия индекса, вы можете использовать:
ALTER INDEX IX_TestTable_Col1 ONTestTableREBUILDWITH (DATA_COMPRESSION = ROW);