Компрессия данных появилась ещё в SQL Server 2008, но в версии SQL Server 2008 R2 её значительно улучшили над Unicode-символами. Для примера запустим один и тот же скрипт на 2х инстансах 2008 и 2008R2 (эксперементы ставим над системной таблицей dbo.spt_values базы данных master):
01.
SELECT
@@VERSION
as
Version
02.
GO
03.
04.
USE
master
05.
GO
06.
07.
ALTER
TABLE
dbo.spt_values
REBUILD
WITH
(data_compression =
none
)
08.
GO
09.
10.
EXEC
sp_spaceused
'dbo.spt_values'
;
11.
GO
12.
13.
ALTER
TABLE
dbo.spt_values
REBUILD
14.
WITH
(data_compression = ROW)
15.
GO
16.
17.
EXEC
sp_spaceused
'dbo.spt_values'
;
18.
GO
Результат на SQL Server 2008:
Результат на SQL Server 2008R2:
Но для большей наглядности улучшенной компрессии, создадим тестовую таблицу с повторяющимися символами (Кириллица в Юникоде)
01.
SELECT
@@VERSION
as
Version
02.
GO
03.
04.
USE
TempDB
05.
GO
06.
07.
CREATE
TABLE
dbo.Test (val
NVARCHAR
(124))
WITH
(data_compression = ROW)
08.
GO
09.
10.
INSERT
INTO
dbo.Test
11.
SELECT
'Я люблю пиво! Я люблю пиво! Я люблю пиво!:)))'
12.
GO
100000
13.
14.
EXEC
sp_spaceused
'dbo.Test'
;
15.
GO
16.
17.
DROP
TABLE
dbo.Test
Результат на SQL Server 2008:
Результат на SQL Server 2008R2:
Ссылки по теме