Нагрузка на сервер

Александр Маслов

Доброго времени суток! Существует некий проект, все данные хранятся в БД MySQL. Некоторые таблицы зависят от других. Например, есть таблица users - в ней хранится логин, пароль. И есть таблица users_inform - в ней хранятся данные о некоем пользователе (имя, фамилия, пол и т.д). При выводе на страницу мне приходится считывать данные из 2х и более таблиц, добавлять в другие, так же каждые пять секунд обновлять текущие новыми данными, причем если все это совершается для каждого пользователя и их более 6к онлайн. В общем, все действия вызывают неплохую такую нагрузку на сервер :( И возникает вопрос:

  1. Какими методами, способами можно в разы сократить нагрузку на сервер, если соединение некоторых таблиц в одну не подходит?
  2. Какие ваши методы решения данной проблемы?
  3. Что, на ваш взгляд, будет более целесообразным?

P.S проект мобильный (WAP) и решение в виде js и т.д не катит...

2 ответа

Александр Маслов

  1. Нужно найти самые тяжелые запросы, например, используя EXPLAIN, попытаться их оптимизировать.
  2. Там где идет какая либо выборка сделать индексы для полей.
  3. По возможности удалить неактуальные записи в БД, тем самым снизив нагрузку
  4. Обновить железо ))

Всё это, конечно, очень общие слова, конкретика возможна при другой постановке вопроса.


Александр Маслов

Таблицы объединять не нужно. Но добавить индексов к записям можно! Это делает таблицы больше, но работу с ними быстрее, или же искользовать другой engine для таблиц, например InnoDB, который быстрее работает с выборками. Конечно же оптимизировать запросы, заменив, например BEETWEEN (a,b) на val=>a AND val<=b и другие медленные запросы. Почитайте это и вот это

licensed under cc by-sa 3.0 with attribution.