Правильная выборка из базы данных при высоких нагрузках

291
12 июня 2017, 23:14

Здравствуйте

Планирую создать проект при которой идет постоянное обращение пользователей к базе данных. Максимальная нагрузка на сервер одновременно 10.000 пользователей.

Вопрос:

  • какую базу данных выбрать
  • какой мощности должен быть сервер

Например: Приложение по английскому языку которых очень много на просторах интернета.

Создаем словарик пользователя в который пользователь будет отправлять свои слова из общей таблицы слов word

База данных: например MySQL Есть таблица пользователей users / таблица word / таблица users_word

Пользователь заходит в общую таблицу слов word и добавляет из нее слова себе в словарик в users_word. И уже в словарике пользователя с помощью SELECT мы вытаскиваем слова из таблицы users_word где user_id равен сессионному id пользователя.

Вопрос:

  • Если 10 000 пользователей отправят в users_word по 1000 слов то там будет 10 000 000 строк данных, и при 1000 одновременных запросов SELECT по id пользователей не полетит ли база данных MySQL.Или лучше использовать другую базу данных для этого или другой способ выборки?

  • Какой мощности сервер выдержит такие нагрузки?

  • Хватит ли сервера 4 Cores, 120 GB SSD, RAM 8 GB или нужно мощнее?
  • Сколько запросов одновременно может обрабатывать база данных, и что происходит если таких запросов больше ее возможностей, задержка? база данных летит? запросы проскальзывают?
Answer 1

Вопрос какой-то общий и холиварный, если честно, но попробую разъяснить:

  1. Нужно расставить индексы на поля, по которым будут идти запросы в БД.
  2. Не используйте INNER JOIN в запросах, тогда база точно ляжет, PHP быстрее отработает.
  3. Про сервер вообще атас, никто Вам не сможет точно сказать, чем больше памяти Вам выделят, тем лучше, надо полагать Вы про VDS написали.
  4. При переполнении кол-ва запросов (оно настраивается кажись), сервер просто упадет с 500 или 504 ошибкой по таймауту. Тогда придется еще раз оптимизировать запросы к БД.
READ ALSO
Создание расписания php

Создание расписания php

Столкнулся с трудностями в создании скрипта, который будет создавать расписание для игр футбольного турнира

540
1C-Bitrix CIBlockElement::GetByID

1C-Bitrix CIBlockElement::GetByID

Нужно в файле bitrix/php_interface/initphp вывести значение свойства блока

428
Как работает валидация на JavaScript?

Как работает валидация на JavaScript?

Добрый деньНемного не понимаю как работают проверки на клиенте и сервере

290
Не вырисовывает таблицу php

Не вырисовывает таблицу php

Подскажите в чем проблема,почему не вырисовывает таблицу

202