2016-07-01 3 views
0

Я делаю сайт с концепцией «следующий». Всякий раз, когда пользователь загружает изображение или видео, я запрашиваю таблицу «Следующий», чтобы получить всех, кто следует за загрузчиком, а затем с помощью цикла добавить их имя в запрос INSERT и затем выполнить его в таблице «уведомлений», например предлагается здесь http://www.w3schools.com/php/php_mysql_insert_multiple.asp.Будет ли вставка нескольких строк в таблицу «Уведомления» замедлить запрос?

Проблема заключается в том, что если у человека есть, скажем, 2000 последователей, это может привести к массивному запросу, а также 2000 записей в таблице «уведомлений». Является ли это оптимальным алгоритмом или есть лучший способ сделать это? Как сделать такие крупные сайты, как Quora?

+0

Более крупные сайты, как правило, используют «очереди сообщений», чтобы обрабатывать их на сервере. что ты уже испробовал? –

+0

@JeremyHarris Все, что я пробовал, это метод, который я объяснил в вопросе. Действительно ли запросы сообщений более эффективны? Не могли бы вы помочь мне, предоставив учебник или что-то еще? Большое спасибо! –

+0

Не «запросы сообщений» .... Очереди сообщений. Думайте о них, как о коробке на вашем сервере или в облаке, где вы можете быстро бросить вещи в режиме реального времени, а затем вернуться и обработать их, чтобы с помощью PHP-скрипта, работающего каждые 10 минут с CRON. https://www.sitepoint.com/message-queues-comparing-beanstalkd-ironmq-amazon-sqs/ –

ответ

0

Я не очень хорошо знакомы с тем, как крупные сайты, как Quora справиться с этим, но если бы я был на вашем месте, я бы сделал пару вещей:

  • Использование базы данных NoSQL для хранения notifications. Это быстрее, чем выполнение тонны запросов MySQL все время (но обычно не кислые).
  • Запустите notification запросов в CronJob или другой системе очередей, чтобы он не заставлял конечных пользователей запускать запросы перед загрузкой следующей страницы.

Надеюсь, это поможет.