Какие есть способы снизить нагрузку на базу данных mysql?
Имеется база и простой сервис вопрос-ответ, хостер то и дело сообщает о превышении лимита... При том, что нагрузка на ЦП минимальная, не превышает и 5-6% (бд заходит за 100).
Имеются ли практики в использовании какого-либо буфера? Может хранить все в XML (перенести данные с бд на сервер и нагрузить частично его) до какого-то момента, а раз в сутки синхронизировать, к примеру.
Пока что все просто, получил данные, подготовил запрос - исполнил.
Хранить данные в XML - отличный способ поднять нагрузку на сервер до 300%. Этот формат не предназначен для обработки (уж тем более, для многопоточной) данных, он годится для передачи информации между системами.
Буфер для базы есть, кэши там, вот это вот все. А у вас индексы в таблицах есть?
Гуглоботу можно сказать через robots.txt, как часто можно посещать ваш сайт, мне кажется это решит вашу проблему/
spoiler
Директива Crawl-delay
Эта директива была создана для того, чтобы убрать возможность нагрузки на ваш сервер. Поисковые роботы могут одновременно делать сотни запросов на ваш сайт и если ваш сервер слабый, это может вызвать незначительные сбои. Чтобы такого не произошло, придумали правило для роботов Crawl-delay — это минимальный период между загрузками страницы вашего сайта. Стандартное значение для этой директивы рекомендуют ставить 2 секунды. В Robots это выглядит так: Crawl-delay: 2