Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 Кто поможет оптимизировать запросы к БД от instantcms  [new]
AlexProfit
Member

Откуда:
Сообщений: 5
на сервере больше всего нагрузки создаётся процессом mysql. В нём висит два очень долгих процесса.

| 152 | dizuser | localhost | diz | Query | 34 | Copying to tmp table |
SELECT c.*,
IFNULL(u.nickname, 0) as nickname,
IFNULL(u.login, 0) as login,
IFNULL(u.is_deleted, 0) as is_deleted,
IFNULL(p.imageurl, 0) as imageurl,
IFNULL(p.gender, 0) as gender
FROM cms_comments c
LEFT JOIN cms_users u ON u.id = c.user_id
LEFT JOIN cms_user_profiles p ON p.user_id = u.id
WHERE c.published = 1
AND (c.target IN ('mapnews','mapitem','blog','article','palbum','photo','userphoto'))
AND (c.is_hidden=0)
ORDER BY c.pubdate DESC
LIMIT 0, 6
|

Сайт сейчас открылся, спустя 2 минуты

Кто сможет настроить запросы, чтобы сервер не вис?

Сообщение было отредактировано: 24 янв 20, 21:15
24 янв 20, 13:20    [22065963]     Ответить | Цитировать Сообщить модератору
 Re: Кто поможет оптимизировать запросы к БД от instantcms  [new]
miksoft
Member

Откуда:
Сообщений: 38000
AlexProfit,

Показывайте план запроса и DDL всех таблиц, участвующих в запросе.
24 янв 20, 13:25    [22065967]     Ответить | Цитировать Сообщить модератору
 Re: Кто поможет оптимизировать запросы к БД от instantcms  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20016
Ну если оставить только запрос
SELECT c.*,
       IFNULL(u.nickname, 0) as nickname,
       IFNULL(u.login, 0) as login,
       IFNULL(u.is_deleted, 0) as is_deleted,
       IFNULL(p.imageurl, 0) as imageurl,
       IFNULL(p.gender, 0) as gender
FROM cms_comments c
LEFT JOIN cms_users u ON u.id = c.user_id
LEFT JOIN cms_user_profiles p ON p.user_id = u.id
WHERE c.published = 1
  AND (c.target IN ('mapnews','mapitem','blog','article','palbum','photo','userphoto'))
  AND (c.is_hidden=0)
ORDER BY c.pubdate DESC
LIMIT 0, 6

то для начала хочется спросить - а что, вот реально есть каменты без юзера? типа ветром надуло? ну и аналогично - а что, есть юзеры без профиля, сплошной анфас?

Что же до оптимизации:
1) Сразу - ограничьте выборку вменяемым диапазоном c.pubdate
2) Показывайте DDL всех участвующих таблиц, полностью, и дайте статистику по наполнению, включая селективность условий связывания.
24 янв 20, 13:30    [22065977]     Ответить | Цитировать Сообщить модератору
 Re: Кто поможет оптимизировать запросы к БД от instantcms  [new]
AlexProfit
Member

Откуда:
Сообщений: 5
то для начала хочется спросить - а что, вот реально есть каменты без юзера? типа ветром надуло? ну и аналогично - а что, есть юзеры без профиля, сплошной анфас?

Регистрируются боты, но в админке висят как не активированные и наверно коментят))...
24 янв 20, 13:36    [22065983]     Ответить | Цитировать Сообщить модератору
 Re: Кто поможет оптимизировать запросы к БД от instantcms  [new]
AlexProfit
Member

Откуда:
Сообщений: 5
Akina


Что же до оптимизации:
1) Сразу - ограничьте выборку вменяемым диапазоном c.pubdate
2) Показывайте DDL всех участвующих таблиц, полностью, и дайте статистику по наполнению, включая селективность условий связывания.


Я в БД профан... поэтому и обратился за помощью...

(ограничьте выборку вменяемым диапазоном c.pubdate) - как и где это сделать?
( Показывайте DDL всех участвующих таблиц, полностью, и дайте статистику по наполнению, включая селективность условий связывания) - как это сделать?
24 янв 20, 13:39    [22065989]     Ответить | Цитировать Сообщить модератору
 Re: Кто поможет оптимизировать запросы к БД от instantcms  [new]
AlexProfit
Member

Откуда:
Сообщений: 5
miksoft


Показывайте план запроса и DDL всех таблиц, участвующих в запросе.


А как это сделать?
24 янв 20, 13:40    [22065990]     Ответить | Цитировать Сообщить модератору
 Re: Кто поможет оптимизировать запросы к БД от instantcms  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20016
AlexProfit
(ограничьте выборку вменяемым диапазоном c.pubdate) - как и где это сделать?

Ну отберите их во WHERE, скажем, за последний день... или неделю. Всё серверу будет легче сортировать.
AlexProfit
( Показывайте DDL всех участвующих таблиц, полностью, и дайте статистику по наполнению, включая селективность условий связывания) - как это сделать?

Как минимум по каждой таблице дайте результат выполнения SHOW CREATE TABLE tablename, а также количество записей.
24 янв 20, 14:41    [22066043]     Ответить | Цитировать Сообщить модератору
 Re: Кто поможет оптимизировать запросы к БД от instantcms  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 16783
AlexProfit
miksoft


Показывайте план запроса и DDL всех таблиц, участвующих в запросе.


А как это сделать?

EXPLAIN EXTENDED
SELECT c.*,
       IFNULL(u.nickname, 0) as nickname,
       IFNULL(u.login, 0) as login,
       IFNULL(u.is_deleted, 0) as is_deleted,
       IFNULL(p.imageurl, 0) as imageurl,
       IFNULL(p.gender, 0) as gender
FROM cms_comments c
LEFT JOIN cms_users u ON u.id = c.user_id
LEFT JOIN cms_user_profiles p ON p.user_id = u.id
WHERE c.published = 1
  AND (c.target IN ('mapnews','mapitem','blog','article','palbum','photo','userphoto'))
  AND (c.is_hidden=0)
ORDER BY c.pubdate DESC
LIMIT 0, 6
24 янв 20, 15:01    [22066062]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить