1. Здесь, скорее всего нужны триггеры. На SO есть похожий вопрос -
https://stackoverflow.com/questions/26418412/how-t...
2. В данном случае, тебе нужно использовать больше чем 1 СУБД. Предлагаю такой вариант:
- MySQL - для хранения всех сообщений
- Redis - для очереди событий
Алгоритм такой:
1. Кто-то отправляет сообщение
2. Сохраняешь сообщение в БД
3. Публикуешь событие "сообщение добавлено"
4. Все подписавшиеся отправляют это сообщение своим клиентам
Получение истории - при первом подключении (это уже SELECT)
Т.е. тут без активного опроса.
P.S. если сервер только 1, то и какая-нибудь inmemory очередь сообщений сойдет.
3. SignalR твою проблему не решит - это просто фреймворк поверх вебсокета (рекомендую использовать его, т.к. облегчает многие задачи). Твоя проблема кроется скорее в слое хранения, т.к. mysql (как и любая другая реляционная СУБД) плохо заточена под event-driven архитектуру, скорее запрос-ответ.