Производительность триггера SQL против захвата данных изменений
В моей базе данных SQL Server 2012 имеется 260 триггеров (по 150 строк каждый) на 160 таблиц для аудита изменения данных в три пользовательских таблицы.
Хорошо ли использовать встроенную опцию захвата данных изменений, имеющую 160 таблиц аудита для 160 таблиц, или был ли вышеуказанный подход правильным?
1 ответ
CDC работает немного иначе: он последовательно читает журнал транзакций и заполняет таблицы истории. Таким образом, записи в истории происходят с задержкой и не задерживают исходную транзакцию DML. Однако таблицы CDC управляются методами, которыми вы не можете управлять, и если вы хотите, например, добавить какой-либо дополнительный столбец, который не сопоставлен ни с одним столбцом данных из исходной таблицы, - это будет проблемой.
Триггеры, которые вы описали или сохранили проки, выполняющие те же действия, достаточно хороши. Обычно они создаются методами генерации кода и не усложняют жизнь разработчика.
Кроме того, если я не ошибаюсь, вы говорите, что ваша история 160 таблиц хранится в 3 таблицах - это также невозможно сделать с помощью CDC. Что, очевидно, ни плохо, ни хорошо.