Разница в производительности между BEFORE Trigger и ON UPDATE CURRENT_TIMESTAMP - MySQL - PullRequest
0 голосов
/ 28 сентября 2018

Итак, у меня и моего друга есть аргумент по поводу использования BEFORE Trigger или ON UPDATE CURRENT_TIMESTAMP для таблицы для обновления значения столбца updated_at.Цель этого столбца, как следует из названия, состоит в том, чтобы просто сохранить последний раз, когда строка была обновлена.

Он установил триггер для того же события - Событие - BEFORE

  BEGIN
       set NEW.updated_at := current_timestamp();
  END

И я считаю, что мы должны использовать атрибут ON UPDATE CURRENT_TIMESTAMP, так как это триггер по умолчанию, предоставляемый MySQL для того же, но для события AFTER.

Я попытался найти разницу в производительности вдокументация но ничего не наткнулся.Любая помощь?

1 Ответ

0 голосов
/ 28 сентября 2018

Несомненно, подход ON UPDATE CURRENT_TIMESTAMP быстрее триггера (особенно при большой нагрузке), потому что он проще.Вы, конечно, можете думать о нем как о триггере по умолчанию , но он фактически встроен в код ОБНОВЛЕНИЯ базы данных.Путь выполнения в СУБД не требует специальной логики для обработки транзакций, в то время как триггеры делают.

Обновление метки времени происходит одновременно с любым другим обновлением;ни до, ни после.Если откат обновления (транзакционный), изменение метки времени откатывается вместе с остальными измененными столбцами

Будущим программистам также немного легче понять вашу таблицу, потому что они могут просто посмотреть определения столбцови не нужно знать о триггере.(Но это вопрос мнения.)

Но есть более важные дизайнерские решения, о которых можно спорить.(Также вопрос мнения.)

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