by Admin
18. августа 2009 21:05
Компрессия данных появилась ещё в SQL Server 2008, но в версии SQL Server 2008 R2 её значительно улучшили над Unicode-символами.
Для примера запустим один и тот же скрипт на 2х инстансах 2008 и 2008R2 (эксперементы ставим над системной таблицей dbo.spt_values базы данных master):
SELECT @@VERSION as Version
GO
USE master
GO
ALTER TABLE dbo.spt_values REBUILD WITH (data_compression = none)
GO
EXEC sp_spaceused 'dbo.spt_values';
GO
ALTER TABLE dbo.spt_values REBUILD
WITH (data_compression = ROW)
GO
EXEC sp_spaceused 'dbo.spt_values';
GO
Результат на SQL Server 2008:
Результат на SQL Server 2008R2:
Но для большей наглядности улучшенной компрессии, создадим тестовую таблицу с повторяющимися символами (Кириллица в Юникоде)
SELECT @@VERSION as Version
GO
USE TempDB
GO
CREATE TABLE dbo.Test (val NVARCHAR(124)) WITH (data_compression = ROW)
GO
INSERT INTO dbo.Test
SELECT 'Я люблю пиво! Я люблю пиво! Я люблю пиво!:)))'
GO 100000
EXEC sp_spaceused 'dbo.Test';
GO
DROP TABLE dbo.Test
Результат на SQL Server 2008:
Результат на SQL Server 2008R2:
Более подробно читаем тут.