Есть ли способ запустить триггер в отдельном потоке в MySQL? - PullRequest
2 голосов
/ 07 декабря 2010

У меня есть веб-приложение на PHP, и когда я вставляю его в таблицу, я написал триггер для подсчета некоторых результатов, и это требует времени. Мое PHP-приложение ожидает завершения триггера. Может ли этот триггер работать в отдельном потоке, так что мое приложение не будет ожидать завершения триггера?

1 Ответ

4 голосов
/ 26 января 2011

Нет.

Но, как сказал бы Билл Клинтон, «и я скажу вам, почему».

Одним из больших преимуществ триггера является то, что действия триггера содержатся в транзакции исходного оператора, который сработал триггер. Это хорошо с точки зрения реляционного мышления, потому что нам нравится соответствие требованиям ACID.

Теперь, если вам не нужно это соответствие ACID, и допустимо, чтобы инициируемые действия вступили в силу «в конце концов», удалите триггер и создайте таблицу «действий». Тогда либо триггер может что-то добавить в таблицу действий, либо ваш PHP-код может это сделать. У вас может быть задание, запрашивающее эту таблицу раз в секунду или около того, и, если оно что-то находит, оно выполняет его. Не беспокойтесь о производительности демона. Один-второй запрос таблицы, которая обычно пуста, ничто.

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