Нужно оптимизировать SQL-запрос. За деньги

Zdorova
На сайте с 09.01.2010
Offline
133
1141

Хостер часто жалуется, что мой сайт (самопис, 3к уников) создает нагрузку на сервер. Временами отключает сервер или БД.

Вчера он мне скинул пару логов медленных запросов.

use lavrentii2;

SELECT /*!40001 SQL_NO_CACHE */ * FROM `c_news`;
# Time: 120326 16:02:42
# User@Host: root[root] @ [217.112.37.4]
# Query_time: 31 Lock_time: 0 Rows_sent: 151400 Rows_examined: 151400
SELECT /*!40001 SQL_NO_CACHE */ * FROM `cute_comments`;
# Time: 120326 16:04:13
# User@Host: root[root] @ [217.112.37.4]
# Query_time: 12 Lock_time: 0 Rows_sent: 315896 Rows_examined: 315896
use betforex_newx;
SELECT /*!40001 SQL_NO_CACHE */ * FROM `wp_postmeta`;
# Time: 120326 16:04:49
# User@Host: root[root] @ [217.112.37.4]
# Query_time: 36 Lock_time: 0 Rows_sent: 42310 Rows_examined: 42310
SELECT /*!40001 SQL_NO_CACHE */ * FROM `wp_posts`;
# Time: 120326 16:08:16
# User@Host: root[root] @ [217.112.37.4]
# Query_time: 14 Lock_time: 0 Rows_sent: 1738 Rows_examined: 1738


use lavrentii2;
select * from c_news where c_id='1671';
# User@Host: lavrentii2[lavrentii2] @ [217.112.35.68]
# Query_time: 31 Lock_time: 0 Rows_sent: 1 Rows_examined: 10574
select * from c_news where c_id='12231';
# User@Host: lavrentii2[lavrentii2] @ [217.112.35.68]
# Query_time: 34 Lock_time: 0 Rows_sent: 1 Rows_examined: 10574
select * from c_news where c_id='12237';
# Time: 120326 22:33:41
# User@Host: svt119_sout[svt119_sout] @ [217.112.35.67]
# Query_time: 16 Lock_time: 0 Rows_sent: 5 Rows_examined: 64307
use svt119_sout;
SELECT SQL_CALC_FOUND_ROWS wp_southwesposts.* FROM wp_southwesposts WHERE 1=1 AND wp_southwesposts.post_type = 'post' AND (
# Time: 120326 22:39:11
# User@Host: krav4_ivan[krav4_ivan] @ [217.112.35.68]
# Query_time: 11 Lock_time: 0 Rows_sent: 6 Rows_examined: 11969

Что это значит? Куда копать и сколько это будет стоить? Выслушаю мнения и предложения. Спасибо.

P.S. Как понимаю, в первом случае запрос обходит все 150 тыс комментариев сайта?

YW
На сайте с 09.03.2012
Offline
2
#1
Zdorova:
skip

надо смотреть структуру таблиц

Консультации по WordPress - icq 612425
M
На сайте с 12.11.2005
Offline
122
#2
Zdorova:
Куда копать

Копайте скрипты - зачем им нужна полная выборка всех новостей, комментов и т.д.

Ставьте ограничения по потребностям, проверьте индексы таблиц - это то, что можно попробовать сделать оперативно и вполне самостоятельно.

N
На сайте с 06.05.2007
Offline
419
#3
SELECT /*!40001 SQL_NO_CACHE

Учитывая, что за короткое время выбраны все записи всех таблиц, скорее всего это сработал бекап базы.

Оставшиеся "надо смотреть". Причем, с немалым терпением и соответствующей оплатой. Тут еще и хостер, похоже, накидал чужих запросов, а не только ваших. Откуда там запросы wordpress, если у вас самопис?

Кнопка вызова админа ()
Zdorova
На сайте с 09.01.2010
Offline
133
#4

Да, хостер ошибся.

Вот "моё"

use lavrentii2;

SELECT /*!40001 SQL_NO_CACHE */ * FROM `c_news`;
# Time: 120326 16:02:42
# User@Host: root[root] @ [217.112.37.4]
# Query_time: 31 Lock_time: 0 Rows_sent: 151400 Rows_examined: 151400
SELECT /*!40001 SQL_NO_CACHE */ * FROM `cute_comments`;
# Time: 120326 16:04:13
# User@Host: root[root] @ [217.112.37.4]
# Query_time: 12 Lock_time: 0 Rows_sent: 315896 Rows_examined: 315896

use lavrentii2;
select * from c_news where c_id='1671';
# User@Host: lavrentii2[lavrentii2] @ [217.112.35.68]
# Query_time: 31 Lock_time: 0 Rows_sent: 1 Rows_examined: 10574
select * from c_news where c_id='12231';
# User@Host: lavrentii2[lavrentii2] @ [217.112.35.68]
# Query_time: 34 Lock_time: 0 Rows_sent: 1 Rows_examined: 10574
select * from c_news where c_id='12237';
# Time: 120326 22:33:41
# User@Host: svt119_sout[svt119_sout] @ [217.112.35.67]
# Query_time: 16 Lock_time: 0 Rows_sent: 5 Rows_examined: 64307

Готов предоставить полный доступ тому, кто может оптимизировать эти запросы или некоторые. Если конечно по цене договоримся. И если этот "кто-то" внушит доверие, ибо могу довериться только спецу.

---------- Добавлено 27.03.2012 в 16:03 ----------

modelist:
Копайте скрипты - зачем им нужна полная выборка всех новостей, комментов и т.д.
Ставьте ограничения по потребностям, проверьте индексы таблиц - это то, что можно попробовать сделать оперативно и вполне самостоятельно.

Самостоятельно не могу. Вы можете помочь?

M
На сайте с 12.11.2005
Offline
122
#5

Zdorova, отправил личное сообщение.

Joker-jar
На сайте с 26.08.2010
Offline
171
#6

Тут оптимизировать то нечего. Делаются простейшие выборки, даже без джойнов. Единственное, повторюсь, настораживает полная выборка по таблицам, подразумевающим большое кол-во записей. Правда, встречалась на моей практике поделка, в которой таким образом определялось кол-во записей в таблице. Надеюсь, не тот случай?

deepslam
На сайте с 09.05.2006
Offline
204
#7

Индекс на c_id стоит?

Надеюсь это не строковое поле? )

Попробуйте вместо


select * from c_news where c_id='1671';

писать:


select * from c_news where c_id=1671;
Удаление вирусов на сайте (http://www.virusonsite.ru) | Scripto CMS - бесплатная система управления сайтом (http://www.scripto-cms.ru) |Профессиональный скрипт каталога ссылок , статей, фирм и объявлений! (http://www.scripto.ru) | Уникальный скрипт для публикации контента (http://publisher.scripto.ru)
Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#8

*(звездочка) в запросах используется в следующих случаях:

1) процесс обучения

2) при разработке или тесте.

3) Редкий случай, когда из таблицы необходимо выбирать все поля.

Если сами не можете оптимизировать, то готов помочь. Пишите ЛС, обсудим подробности.

Подпись))
Joker-jar
На сайте с 26.08.2010
Offline
171
#9

Если c_id ключевое поле, то индекс по нему строится и так. В принципе, да, не исключено, что ключа нет.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий