Страшные запросы в базу данных

Непонятный запрос, который превышает непонятные вещи, за которые отключают сайт навсегда

#1 9 декабря 2013 в 14:03
Здравствуйте, уважаемое сообщество!
Сегодня столкнулся с такой проблемой. Хостер прислал страшные вещи, которые можно увидеть внизу. Далее сказано, что эти вещи, что-то превысили, и это сделал вот этот запрос в базу. Раньше такого не было никогда. Хостер говорит, что надо теперь исправить этот запрос в базу и сказать им что именно я сделал. Это все равно, что мне сейчас дадут найти ошибку в китайском тексте и исправить ее...😥Подскажите, пожалуйста, что вообще говорит этот запрос, о чем вообще речь? Еще мне ответили, что "Запросы как select * c выборкой множества строк или полнотекстовый поиск, неприемлемы.". Короче, послали меня к селекту какому-то...😥

  1. Время исполнения, секунд - 60
  2. Кол-во просмотренных строк - 200925
  3. Запрос:
  4. -------
  5. SET timestamp=1386530763;
  6. SELECT con.*,
  7. con.pubdate as fpubdate,
  8. cat.title as cat_title, cat.seolink as catseolink,
  9. cat.showdesc,
  10. u.nickname as author,
  11. u.login as user_login,
  12. cmm.count_com
  13. FROM cms_content con
  14. INNER JOIN cms_category cat ON cat.id = con.category_id
  15. LEFT JOIN cms_users u ON u.id = con.user_id
  16. LEFT JOIN
  17. (
  18. SELECT target_id, COUNT(id) AS count_com
  19. FROM cms_comments cmm
  20. WHERE target='article' AND published = 1
  21. GROUP BY target_id
  22. ) cmm ON cmm.target_id = con.id
  23. WHERE con.is_arhive = 0
  24. AND (cat.NSLeft >= '24' AND cat.NSRight <= '49'
  25. AND cat.parent_id > 0)
  26. AND (con.showlatest = 1)
  27. AND (con.published = 1 AND con.pubdate <= '2013-12-08 21:26:56' AND
  28. (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '2013-12-08 21:26:56')))
  29.  
  30.  
  31.  
  32.  
  33. ORDER BY con.pubdate DESC
  34. LIMIT 0, 4;
#2 9 декабря 2013 в 14:48
Thanatognozija, в InstantCMS подобных запросов не было никогда — это видимо от какого-то дополнения.

или полнотекстовый поиск

Thanatognozija
что за глупость они сказали. пусть вообще mysql отключат тогда. странный хостер.
#3 9 декабря 2013 в 14:58
Спасибо большое, уважаемый Fuze. Я так понял, что узнать какое именно дополнение требует такие запросы невозможно.😥Базу отключили со словами "Исправляйте проблему". А как ее исправить, если база отключена. Короче, без прописки не берут на работу, а без работы не прописывают. :(
#4 9 декабря 2013 в 15:01
Thanatognozija, скачайте сайт на локалку и тоталкоммандером поищите внутри файлов данный текст, отключите модуль или плагин. ну или компонент.
#5 9 декабря 2013 в 15:03
Thanatognozija,
пожожий запрос есть в components\content\model.php
#6 9 декабря 2013 в 15:07
Да, но проблема в том, что я ничего не делал и не менял уже достаточно давно, просто добавляю материалы и все, больше ничего не делаю, и тут вот как гром среди ясного неба. Я пробую завел новую базу, перенес туда старую базу, сейчас включу сайт, но вот что отключать конкретно, я не пойму.
#7 9 декабря 2013 в 15:07
Thanatognozija, у вас установлен какой-то хак, который подсчитывает количество комментариев к статьям. Изменен запрос в файле модели компонента content. Сравните ваш запрос с запросом в методе модели getArticlesList(), строка где-то 237.
Скорее всего комментов к статьям очень много и поэтому и создается такая нагрузка. Уж очень много

Кол-во просмотренных строк — 200925

Только комментами.
Замените файл и отпишитесь хостеру.
Возможно данный запрос в каком-то модуле.
#8 9 декабря 2013 в 15:10
Да, действительно, в файле, который Вы указали, есть такой запрос:
  1. $sql = "SELECT con.*,
  2. con.pubdate as fpubdate,
  3. cat.title as cat_title, cat.seolink as catseolink,
  4. cat.showdesc,
  5. u.nickname as author,
  6. u.login as user_login,
  7. cmm.count_com
  8. FROM cms_content con
  9. INNER JOIN cms_category cat ON cat.id = con.category_id
  10. LEFT JOIN cms_users u ON u.id = con.user_id
  11. LEFT JOIN
  12. (
  13. SELECT target_id, COUNT(id) AS count_com
  14. FROM cms_comments cmm
  15. WHERE target='article' AND published = 1
  16. GROUP BY target_id
  17. ) cmm ON cmm.target_id = con.id
  18. WHERE con.is_arhive = 0
  19. {$this->inDB->where}
  20.  
  21. {$this->inDB->group_by}
  22.  
  23. {$this->inDB->order_by}\n";
  24.  
  25. if ($this->inDB->limit){
  26. $sql .= "LIMIT {$this->inDB->limit}";
  27. }
#9 9 декабря 2013 в 15:12

Да, действительно, в файле, который Вы указали, есть такой запрос:

Thanatognozija
Метод замените оригиналом.
#10 9 декабря 2013 в 15:16
Да, я попробую сейчас просто поменять файл на оригинальный и запустить сайт.
#11 9 декабря 2013 в 15:20
В общем, сделал так. Сделал бэкап отключенной базы, создал новую пустую, импортировал туда ныне отключенную, поменял местами файлы, включил, все работает. Буду ждать новых петиций от хостера, или все будет хорошо. Единственное, я не пойму, что же теперь у меня исчезнет, из-за отключение этих подсчетов комментариев и откуда они взялись.

Огромное всем СПАСИБО, за помощь! Скорее всего именно там и была проблема, странно только, что всплыла она только сегодня.
#12 9 декабря 2013 в 15:49
По теме нагрузки на БД еще есть один момент. Почему-то страницы, которые разбиты на части, например как книги, загружаются очень медленно, и у хостера там написано, что время их долгое. Пример такой страницы . Можно ли как-то тут что-то сделать, или это, как я думаю, потому, что сначала загружается вся книга целиком, а потом ей еще надо время разбиться на части как-то, поэтому просто не получится быстрее это все обрабатывать?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.