Блокировка базы данных

Автор redfox, 09 июля 2018, 14:14:56

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

redfox

Здравчствуйте ! В последнее время от хостер провайдера приходит сообщение о блокировке базы данных:
"База данных a65794_2 заблокирована из-за критической нагрузки на дисковую подсистему.
Проблемный запрос, выявленный на момент проблемы

# User@Host: a65794_2[a65794_2] @  [10.0.1.2]  Id: 221482791
# Schema: a65794_2  Last_errno: 0  Killed: 0
# Query_time: 406.009732  Lock_time: 0.000088  Rows_sent: 0  Rows_examined: 3075126  Rows_affected: 6
# Bytes_sent: 50
use a65794_2;
SET timestamp=1530871703;
INSERT IGNORE INTO p0604_log_search_results
                                                      (id_search, relevance, id_topic, id_msg, num_matches)
                                              SELECT
                                                      133,
                                                      1000 * (30 * COUNT(*) / (MAX(t.num_replies) + 1) + 25 * CASE WHEN MAX(m.id_msg) < 2184200 THEN 0 ELSE (MAX(m.id_msg) - 2184200) / 936087 END + 20 * CASE WHEN MAX(t.num_replies) < 200 THEN MAX(t.num_replies) / 200 ELSE 1 END + 15 * 0 + 10 * CASE WHEN MIN(m.id_msg) = MAX(t.id_first_msg) THEN 1 ELSE 0 END + 0 * MAX(t.is_sticky)) / 100 AS relevance,
                                                      t.id_topic,
                                                      MAX(m.id_msg) AS id_msg,
                                                      COUNT(*) AS num_matches
                                              FROM p0604_topics AS t
                                                      INNER JOIN p0604_messages AS m ON (m.id_topic = t.id_topic)
                                              WHERE m.body LIKE '%threescompany%'
                                              GROUP BY t.id_topic
                                              LIMIT 1200;

Оптимизируйте mysql запросы, или мы будем вынуждены перейти на тариф VPS, где вы не будете мешать другим пользователям и зависеть от ресурсов вашего VDS."
И еще :
"Дополнительный анализ проблемного запроса выявил еще один момент.
Часть запроса, а именно " INNER JOIN p0604_messages AS m ON (m.id_topic = t.id_topic)" выполняется в таблице, имеющей размер почти 3Гб с количеством записей чуть более 3 миллионов.
Если Вы уменьшите размер этой таблицы, то и проблема, скорее всего, будет решена."
Честно говоря не особо в этом разбираюсь. Что можно сделать? Действительно, при запросе в строке "поиска" сайт начинает подвисать.

Yarik

И как эта таблица называется?Сообщений на форуме много?Я так подозреваю что много.

redfox

На форуме 2711564 сообщений.

redfox

С техподдержки написали:"Дополнительный анализ проблемного запроса выявил еще один момент.
Часть запроса, а именно " INNER JOIN p0604_messages AS m ON (m.id_topic = t.id_topic)" выполняется в таблице, имеющей размер почти 3Гб с количеством записей чуть более 3 миллионов. Если Вы уменьшите размер этой таблицы, то и проблема, скорее всего, будет решена...". Как найти эту таблицу? И как узнать какие посты в ней ?

Yarik

Цитата: redfox от 09 июля 2018, 23:02:02С техподдержки написали:"Дополнительный анализ проблемного запроса выявил еще один момент.
Часть запроса, а именно " INNER JOIN p0604_messages AS m ON (m.id_topic = t.id_topic)" выполняется в таблице, имеющей размер почти 3Гб с количеством записей чуть более 3 миллионов. Если Вы уменьшите размер этой таблицы, то и проблема, скорее всего, будет решена...". Как найти эту таблицу? И как узнать какие посты в ней ?
А это скорее всего и есть таблица с сообщениями,а БД вешается во время поиска по форуму,поиска по этой таблице.
Центр администрирования » Поиск » Поисковое индексирование какой тип поиска стоит?Можно попробовать поставить полнотекстовое индексирование и нашлепать индексов для поиска.
Хотя с таким кол-вом сообщений и размером БД стоит смотреть в сторону VIP-хостинга или VDS.При поиске Вы обычный хостинг будете подвешивать некисло.
Переходить на VPS  и ставить Sphinx для поиска.Вот что нужно Вам.

redfox