MySQL SELECT / JOIN запрос вызывает тупики на производственной БД

Следующий SQL-запрос вызывает взаимные блокировки на производственной базе данных MySQL на сайте WordPress с большой нагрузкой.

    SELECT
lessons.ID AS lesson_id,
resultmeta.meta_value AS status,
lessons.post_title AS title,
lessons.post_name AS slug,
count(resultmeta.meta_value) AS nr_of_results
FROM
mv_posts AS lessons
LEFT JOIN
mv_posts AS results
ON
results.post_parent = lessons.ID AND
results.post_type = 'we_result' AND
results.post_author IN($students_string)
LEFT JOIN
mv_postmeta AS resultmeta
ON
results.ID = resultmeta.post_id AND
resultmeta.meta_key = 'we_result_status_code'AND
results.post_author IN($students_string)
WHERE
lessons.post_type = 'we_lesson' AND
lessons.post_status = 'publish' AND
lessons.ID IN($lessons_id)
GROUP BY
lessons.ID,
resultmeta.meta_value;

С точно такой же БД в тестовой среде запрос выполняется за 0,005 секунды. Таблица mv_postmeta содержит более 3 миллионов строк, а таблица mv_post содержит более 1 миллиона строк.

Вероятно, одновременные вставки вызывают эту проблему и, возможно, перегрузку кеша БД.

Я пытался сделать READ COMMITED через WordPress wp_query безуспешно.

У кого-нибудь есть совет для этого? Сделки закрывают сайт примерно на 2 минуты.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]