Эффективность наличия нескольких триггеров на 1 столе - PullRequest
0 голосов
/ 21 февраля 2011

Я планирую разместить 10-15 триггеров вставки на одной таблице.Каждый триггер будет делать 3 вставки в другую таблицу.Повлияет ли это на мою базу данных?Я думаю, что скорость, необходимая для выполнения всех триггеров, может быть немного медленной.

Причина этого в том, что сторонние разработчики программного обеспечения регистрируют данные в нашей базе данных.Схема таблицы выглядит примерно так:

DateTime EquipA_Speed EquipA_Power EquipB_Speed EquipB_Power EquipC_Speed EquipC_Power

Затем мы хотим нормализовать эти данные в нашей собственной базе данных.В нашей базе данных есть таблица оборудования и таблица SignalType (сигналы - мощность, скорость и т. Д.).

Мой план состоял в том, чтобы у каждого элемента оборудования был триггер, чтобы сделать его проще и удобнее в обслуживании.Когда строка вставлена, мне нужно добавить строку для каждого сигнала для каждого элемента оборудования в таблице сигналов.

SignalID   Value  EquipmentID   SignalTypeID

Ответы [ 2 ]

2 голосов
/ 21 февраля 2011

Вы можете опросить широкую таблицу или использовать сервисный брокер из триггера, чтобы уведомить отсоединенный процесс, который читает таблицу.

Затем вы можете иметь хранимую информацию, которая сначала подготавливает / уничтожает данные во временных таблицах илиТабличные переменные в первую очередь. Затем начинает транзакцию, пишет, фиксирует.

0 голосов
/ 21 февраля 2011

Это зависит от того, что делает триггер. Триггер не выиграет; производительность будет снижена, логика, содержащаяся в триггере, будет прочитана во втором последнем параграфе этой статьи для получения более подробной информации:

http://msdn.microsoft.com/en-gb/magazine/cc164047.aspx

Что вы могли бы сделать, это настроить тестовый набор. Еще нужно обратить внимание на размер файла журнала (.ldf), так как он будет увеличиваться в зависимости от того, как часто выполняется вставка.

ПОЧЕМУ ты так хочешь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...