Вимоги: У базі даних SQL Server є таблиця (наприклад, таблиця журналів, таблиця журналів запитів), яка займає дуже великий простір на диску, можливо, сотні ГБ. Як зменшити використання місця в таблиці? Стиснення даних (з економією місця) може бути увімкнуте для дуже повторюваного тексту (наприклад, HTML, JSON, журнали).
Стиснення ряду
Стиснення змінює фізичне зберігання даних, але не логічну структуру даних. Процес стиснення рядків:
Визначте тип даних кожного стовпця та конвертуйте його у змінну довжину Нарешті, кількість запитів на обсяг зберігання зводиться до фактичного попиту Після стиснення кількість збережених даних на кожній сторінці збільшується Після стиснення зменшити кількість метаданих Наприклад, якщо тип даних стовпця є smallint, система за замовчуванням виділяє 2 байти Але насправді використовується лише 1 байт простору, і якщо стиснення на таблиці увімкнене, його можна виділити за запитом
Стиснення сторінки
Стиснення сторінки виконує додаткові операції для посилення стиснення рядків Основні операції: стиснення рядків, стиснення префіксів, стиснення словника
Споживання процесора: стиснення PAGE > стиснення рядків
Тест
Створіть нові таблиці Users1 і Users2, обидві вставляють по 100 000 даних, і sql-скрипт виглядає так:
Щоб переглянути заповненість місця в таблиці, яка становить 3,27 МБ, виконується наступна команда:
Як показано нижче:
Щоб переглянути статус стиснення таблиці 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) Users2 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 МБ до стиснення і 1,23 МБ після стиснення, як показано на рисунку нижче:
Візуалізація виглядає так:
Посилання:
Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно. |