Какой фомат БД использовать для большого количества записей и чтения и таблицы?

Здравствуйте,
Необходимо реализовать статистику посещений и считывания ее.
В день ~750000 обращений к скрипту по 13 select и update на 2 таблицы.
Запросы простые, вида
SELECT count(*) as users_more_3 FROM `users` WHERE date=? AND script_show>2 LIMIT 1


Использую сейчас MYSQL Innodb, но днем из-за этого возрастает нагрузка на ЦП и 4 процессора работают под 70-90%

Собственно вопрос, какую использовать БД, или же необходимо сократить количество обращений базе(сейчас реализовано так так как делаю проверку существуют ли нужная строка или нет)
  • Вопрос задан
  • 393 просмотра
Пригласить эксперта
Ответы на вопрос 4
sim3x
@sim3x
Слишком мало конкретики
Посмотри на
redis.io/commands/INCR

Или сделай кеширование руками
Или средствами мускула
Или средствами пхп-мемкеша
Или средствами nginx
Ответ написан
Комментировать
@mantyr
Пишу много Golang кода с удовольствием:)
Если MySQL принципиален - попробуйте HandlerSocket, улучшит запись и чтение соответственно, но потребует изучения нового API.

Небольшое описание со ссылками есть в другом моём ответе по смежному вопросу: Вопрос по подключению системы кэширования?
Ответ написан
Комментировать
@lega
Для данного запроса можно выделять одну строку таблицы в день.

А вообще если у вас там много параметров и нужно хранить все, то можно просто заливать в файл линейно, один сервер с кешированием может по +10млн/сек записей писать, далее воркеры потихоньку разгребают эти файлы и итоговые цифры ложат например в redis для быстрой отдачи, а сырые данные например пакуют в архивы если они нужны для полной аналитики.
В итоге БД не будет проблемой, и сервер упрется в разбор http запроса если вы используете PHP/Python и т.п., т.к. там лимит до 100к/сек, хотя для ваших объемов и PHP потянет.
Ответ написан
Комментировать
@asperin2
PHP разработчик
redis или подобное для этого оптимально.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы