Налагодження та управління відстеження змін

Включити відстеження змін можна також в середовища серед SQL Server Management Studio, в діалоговому вікні Властивості бази даних (сторінка «Відстеження змін»).

При включенні відстеження змін, а також в будь-який час в подальшому можна вказати і змінити значення параметрів CHANGE_RETENTION і AUTO_CLEANUP.

Параметр терміну зберігання змін визначає період часу, протягом якого зберігаються дані відстеження змін. Дані відстеження змін, термін зберігання яких закінчився, періодично видаляються. При установці цього значення необхідно враховувати частоту синхронізації додатків з таблицями в базі даних. Зазначений строк зберігання повинен бути не менше максимального періоду часу між синхронізації. Якщо додаток отримує відомості про зміни через більш тривалі інтервали, які повертаються результати можуть виявитися неточними, оскільки частина відомостей про зміни могла вже бути видалена. Щоб уникнути невірних результатів, додаток може визначити, чи не є інтервал між синхронізації надмірно великим, за допомогою системної функції CHANGE_TRACKING_MIN_VALID_VERSION.

Параметр AUTO_CLEANUP використовується для включення і відключення завдання очищення, в процесі виконання якої видаляються старі дані відстеження змін. Він може виявитися корисним при виникненні тимчасової проблеми, яка заважає синхронізації додатків і викликає необхідність припинення процесу видалення застарілих даних відстеження змін на період свого дозволу.

При цьому слід врахувати наступні моменти.

При відстеженні змін рівень сумісності бази даних повинен бути не нижче 90. Якщо рівень сумісності бази даних менше 90, то можна налаштувати відстеження змін. Однак функція CHANGETABLE, використовувана для отримання відомостей про відстеження змін, поверне помилку.

Найпростіший спосіб забезпечення узгодженості всіх даних відстеження змін - ізоляція моментальних знімків. З цієї причини настійно рекомендується включити для бази даних ізоляцію моментальних знімків. Додаткові відомості див. У розділі Використання відстеження змін.

Відстеження змін повинно бути включено для кожної відслідковується таблиці. Якщо трекінг змін увімкнено, ведеться збір відомостей про відстеження для всіх рядків в таблиці, на яку впливає операція DML.

У наступному прикладі показано, як налаштувати відстеження змін за допомогою інструкції ALTER TABLE.

Усічення таблиці, для якої включено відстеження змін, можливо. Однак віддалені в процесі цієї операції рядка не відслідковуються, і проводиться оновлення мінімально допустимої версії. Коли додаток перевірить версію, то перевірка покаже, що версія застаріла і необхідна повторна ініціалізація. Те ж саме відбулося б, якби відстеження змін для цієї таблиці було відключено, а потім знову включено.

Використання відстеження змін пов'язане з деякими додатковими витратами при операціях DML через відомостей про відстеження витрат, які зберігаються в ході операції.

Вплив на DML

Відстеження змін оптимізовано для зниження навантаження на DML-операції. Поступове зниження продуктивності для таблиці, пов'язаної з відстеженням змін, можна порівняти з витратами, що виникають при створенні та обслуговуванні індексу для таблиці.

При зміні кожного рядка при виконанні операції DML у внутрішню таблицю відстеження змін додається рядок. Ефект щодо операцій DML залежить від різних чинників, в тому числі перерахованих нижче.

Число стовпців первинного ключа.

Обсяг змінюваних даних в рядку користувальницької таблиці.

Число операцій, вироблених в рамках транзакції.

Ізоляція моментальних знімків, якщо вона використовується, впливає на всі операції DML, незалежно від того, чи включено відстеження змін.

Вплив на сховище даних

Дані відстеження змін зберігаються у внутрішніх таблицях наступних типів.

Внутрішня таблиця змін

Для кожної користувальницької таблиці, в якій відслідковуються зміни, є одна внутрішня таблиця змін.

Внутрішня таблиця транзакцій

Для бази даних є одна внутрішня таблиця транзакцій.

Ці внутрішні таблиці наступним чином впливають на вимоги до сховища.

Кожна зміна в кожному з рядків користувальницької таблиці призводить до додавання рядка у внутрішню таблицю змін. Кожна така рядок займає невелику фіксовану простір плюс розмір стовпців первинного ключа. Рядок може містити додаткові відомості про контекст, що задаються додатком. Якщо включено відстеження змін стовпців, то кожен змінений стовпець займає 4 байта в таблиці відстеження.

Для кожної зафіксованої транзакції у внутрішню таблицю транзакцій додається рядок.

Як для інших внутрішніх таблиць, місце, займане таблицями відстеження змін, можна визначити за допомогою процедури, що sp_spaceused. Назви внутрішніх таблиць можна визначити за допомогою подання каталогу sys.internal_tables. як показано в наступному прикладі.

Схожі статті