Здравствуйте, у меня есть сервер со 100 клиентскими сайтами, каждый со своей базой данных. Мне нужно, чтобы каждый из них запускал задание cron каждые 24/7 минут, чтобы проверить, есть ли у клиента настроил публикацию сообщения в это время, если это так, установите для is_published
значение 1 в таблице сообщений. Мой вопрос: без тестирования производительности 100 заданий cron каждую минуту будут значительно замедлять работу моего сервера? Я знаю, что это расплывчато, но я запускаю Linux-сервер с 1024 МБ оперативной памяти на порту 10 МБ / с.
2 ответа
Да, это плохая идея по ряду причин. Нагрузка на сервер - одна из них. Вы действительно хотите вложить свои аппаратные средства в установку флага is_published
в сотнях баз данных? Заботятся ли клиенты о задержке до одной минуты? Что произойдет, если количество клиентов будет расти быстрее, чем вы ожидаете?
Есть способ попроще. Просто имейте столбец с PostedTime
в таблице posts
. Затем создайте представление, которое использует этот столбец:
create view v_posts as
select p.*, (PostedTime >= now()) as is_published
from posts;
Это чуть больше 1 запроса в секунду. Если задания cron распределяются равномерно в течение этой минуты, и если задание cron действительно простое и быстрое, я не вижу, в чем может быть проблема.
Похожие вопросы
Новые вопросы
mysql
MySQL — это бесплатная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая использует язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. д. Это разные БД, которые используют свои собственные диалекты SQL для управления данными. В вопросе всегда указывайте точную версию сервера. Версии 5.x сильно отличаются по своим возможностям от версий 8+.