Изисквания: В SQL Server базата данни има таблица (например таблица с логове, таблица на логове за заявки), която заема много голямо дисково пространство, може би стотици GB, как да намалите използването на пространството в таблицата? Компресия на данни (спестяване на пространство) може да бъде активирана за силно повтарящ се текст (например HTML, JSON, логове).
Компресия на редове
Компресията ще промени физическото съхранение на данните, но не и логическата структура на данните. Процесът на компресия на линията:
Идентифицирайте типа данни на всяка колона и го конвертирайте в променлива дължина Накрая, броят на заявките за пространство за съхранение се свежда до реалното търсене След компресия количеството съхранени данни на всяка страница се увеличава След компресия намалете обема метаданни Например, ако типът данни на колона е smallint, системата по подразбиране отделя 2 байта Но в действителност се използва само 1 байт пространство, и ако компресията е активирана върху таблицата, тя може да бъде отделена при поискване
PAGE компресия
Компресията на страници извършва допълнителни операции за подобряване на компресията на редове Основни операции: компресия на редове, компресия на префикси, компресия на речник
Консумация на процесора: PAGE компресия > компресия на редове
Тест
Създайте нови таблици Users1 и Users2, и двете вмъкващи по 100 000 парчета данни, и SQL скриптът е следният:
За да се види заетата маса на масата, която е 3.27 MB, командата е следната:
Както е показано по-долу:
За да се види състоянието на компресия на таблицата Users2, командата е следната:
Както е показано по-долу:
sp_estimate_data_compression_savingsОценете спестяванията си, които могат да се постигнат, когато активирате таблици или дялове за редове, страници, колони хранилища, архиви на колони или XML компресия. Командата е следната:
Изходът е следният:
object_name schema_name index_id partition_number size_with_current_compression_setting(KB) size_with_requested_compression_setting(KB) sample_size_with_current_compression_setting(KB) sample_size_with_requested_compression_setting(KB) Потребители2 dbo 1 1 3368 1296 3448 1328
size_with_current_compression_setting (KB) 3368 KB Индексът заема ≈ 3.29 MB с текущите настройки на компресия size_with_requested_compression_setting (KB) 1296 KB Оценен отпечатък ≈ 1.27 MB, ако активирате новия метод за компресия, който искате, като PAGE или ROW За да се изпълни компресия на страницата, командата е следната:
Сравнение на ефектите:Таблицата Users2 е 3.27 MB преди компресия и 1.23 MB след компресия, както е показано на фигурата по-долу:
Визуализацията е следната:
Препратка:
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим. |