Mysql занимает.7 секунд для “копирования в tmp таблицу”. Что лучший способ состоит в том, чтобы кэшировать этот вид запроса?

У меня есть группа - запросом, который очень быстр когда дело доходит до индексации, присоединения, отправляя результаты и т.д. К сожалению, mysql тратит 99,6% своего времени "копирование к tmp таблице", когда я представляю его. Я в замешательстве относительно того, как я могу заставить mysql работать лучше самостоятельно.

Эта группа запросом по существу находит количество объектов для лучших 20 тегов в системе. Я основываюсь на этом запросе для отфильтровывания тегов, которые пользователь выбирает, по существу сужая поле. Поскольку они выбирают новый тег, производительность запросов улучшается решительно. Если они выбирают 2 или 3 тега, запрос чрезвычайно быстр в нахождении количества объектов с теми 2 или 3 тегами плюс следующие самые популярные теги после этого.

По существу проблема производительности состоит в том, когда никакие теги не выбраны, или когда 1 тег выбран. Что лучший способ состоит в том, чтобы решить эту проблему?

1) Кэш памяти, как ehcache? Доберитесь в спящем режиме включенные? 2) Mysql запрашивают кэш? 3) Сохраните выбранные результаты 0 и 1 тега для каждого тега в системе в таблице кэша и используйте результаты в течение 24-часового периода? Использовать задание для заполнения результатов каждый день?

Какие-либо другие идеи? Я использую Spring, Java, В спящем режиме, Mysql.

1
задан egervari 8 July 2010 в 17:36
поделиться

4 ответа

Какие типы столбцов задействованы? Если вы посмотрите на MySql reference , то сможете увидеть некоторые факторы, которые могут вызывать сохранение на диске вашего запроса во время обработки. Является ли ваша дисковая система достаточно медленной, чтобы вызвать подобную проблему?

0
ответ дан 2 September 2019 в 23:12
поделиться

Нам определенно нужен запрос и запрос EXPLAIN для ответа на этот вопрос. Возможно также со схемой.

2
ответ дан 2 September 2019 в 23:12
поделиться

Можно ли просто создать представление, а не копировать файлы?

0
ответ дан 2 September 2019 в 23:12
поделиться

Попробую предположить. MySQL может записывать временную таблицу на диск, если при одном теге результаты больше, чем установлено для временных таблиц в памяти.

Если у вас есть ресурсы, вы можете рассмотреть возможность увеличения этого параметра. Или вы можете найти способ уменьшить размер результатов, возвращаемых при нулевом или 1 теге.

0
ответ дан 2 September 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: