2009-07-31 1 views
1

Это связано с запросами я бегу от this question, а именно:Что такое опасно большое количество (или темп роста) для Handler_read_rnd_next?

SELECT CONCAT_WS(', ', city, state) AS location, AVG(latitude), AVG(longitude) 
FROM places 
WHERE state='NY' 
     AND city='New York' 
GROUP BY 
     state, city 

Я смотрел на PhpMyAdmin и они имеют одно значение красного помечено, Handler_read_rnd_next. Я думаю, что это имеет смысл; учитывая указанный выше запрос, если местоположение имеет несколько почтовых индексов, функции AVG() собираются группироваться по городу/состоянию, а затем просматривают каждый почтовый индекс.

Мой вопрос в том, когда это становится ужасной вещью? Должен ли я кэшировать эти средние значения для начала или увеличивать несколько тысяч Handler_read_rnd_next каждые несколько минут, что приемлемо для базы данных? Кажется, что это число будет увеличиваться для любого запроса, который использует GROUP BY, поэтому мне интересно, является ли это стандартным тарифом.

ответ

0

Высокие значения случайных счетчиков статистики не являются опасными. Если у вас нет проблемы с производительностью, вам не нужно беспокоиться. Что касается кеширования:

  1. Не выполнять преждевременную оптимизацию. Если вы не знаете, что это станет узким местом (или оно уже есть), не оптимизируйте его. Кэширование данных вручную не является бесплатным; это заставляет ваше приложение тщательно синхронизировать кеш.

  2. Если места в основном доступны только для чтения, что, как я полагаю, это, кэш запросов MySQL уже кэширует это для вас. Поскольку MySQL сохраняет это в прозрачной прозрачной форме, единственная стоимость - это память (что довольно дешево). Проверьте параметры кеша запроса.

1

Я знаю, что Роджер не вокруг больше, но для тех, кто обеспокоен этим ...

сам PHPMYADMIN увеличивает это значение хорошее 300 1К на любом Статус при загрузке страницы.

Так что на самом деле не идут только результаты phpMyAdmin.

Смежные вопросы