Как оптимизировать запросы БД?

Главные вкладки

Аватар пользователя Santa Claus Santa Claus 12 февраля 2009 в 11:38

Сегодня с утра меня порадовал мой хостер, который отрубил все мои сайты. Когда я полез к нему с кулаками вопросами, "какого..." "в чем дело?", мне вежливо ответили, что в папке /tmp/mysql_slow_queries/ лежат логи с медленными запросами в БД, и что - "you have to fix this slow queries".
Смысл в том, что нужно оптимизировать свои скрипты, чтобы БД стала летать. Простая оптимизация БД не убедила службу поддержки, нужно сделать что-то еще.

Подскажите пожалуйста, кто-нить сталкивался с подобными проблемами? Каким образом можно оптимизировать запросы БД в друпале?

P.S.: Вот пример из логов. Все "медленные" запросы разнообразны.

# Web Feb 11 14:04:08 2009
# Query_time: 3 Lock_time: 0 Rows_sent: 1 Rows_examined: 0
use jk
SELECT COUNT(*) FROM node_access WHERE (nid = 0 OR nid = 138) AND ((gid = 0 AND realm + 'all')) AND grant_update >=1

# Web Feb 11 14:58:00 2009
# Query_time: 2 Lock_time: 0 Rows_sent: 1 Rows_examined: 3
use jk_an
SELECT n.nid, n.vid, n.type, n.status, n.created, n.changed, n.comment, n.promote, n.sticky, r.timestamp AS revision_timestamp, r.title, r.body, r.teaser, r.log, r.format, u.uid, u.name, u.picture, u.data FROM node n INNER JOIN users u ON u.uid = n.uid INNER JOIN node_revisions r ON r.vid = n.vid WHERE n.nid = 1525

Комментарии

Аватар пользователя PVasili PVasili 12 февраля 2009 в 11:53

Скорее всего запросы выбраны из контекста:
SELECT COUNT(*) - жуть.... - используйте какое-нибудь 1 поле сейчас попытка суммировать ВСЕ поля
второй вполне нормальный запрос...
Кеширование, оптимизация базы, крон, смена хостёра.

Аватар пользователя Santa Claus Santa Claus 12 февраля 2009 в 11:55

Про смену хостера я сразу подумал, но это время. А мне нужно придумать что-то сейчас, чтобы они временно включили сайты. Оптимизацию баз данных сделал сразу в пхпмайадмине.

Аватар пользователя alisa alisa 12 февраля 2009 в 12:10

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

Аватар пользователя sas@drupal.org sas@drupal.org 12 февраля 2009 в 12:43

1) http://drupal.org/project/db_maintenance">http://drupal.org/project/db_maintenance]http://drupal.org/project/db_ma...
2) Если срочно можно посмотреть откуда запрос - если не core модуль попробовать другое решение или модуль, если core - подумать о смене хоста, или увеличении тарифного плана.