Получение метрики БЫСТРОГО БЫСТРО от большой базы данных MySQL? - PullRequest
0 голосов
/ 04 января 2012

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

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

Я испробовал ряд идей;но, пожалуйста, - если у кого-то есть совет или опыт в этой области, было бы здорово.Вещи пробовали или изучали до сих пор: -

  • Создание статических версий статистики верхнего уровня каждый час или около того - Это интенсивно для всех пользователей и всех активов.Так что как это можно делать регулярно, я не уверен.
  • Вызовите статистику через AJAX, чтобы ее можно было обработать и заполнить (получение статистики верхнего уровня прямо сейчас может занять до 10 секунд для крупного пользователя) после загрузки страницы.Это также может кэшировать статистику в сеансе для сохранения повторяющихся запросов при каждой загрузке страницы.
  • Запрос выполняется с интервалом в 30 минут, т.е. вы входите в систему, он выполняет запрос, а затем, будем надеяться, будет использовать кэш запросов при каждой загрузке.(только 1/2 секунды) до следующего 30-минутного интервала.

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

Ответы [ 2 ]

2 голосов
/ 04 января 2012
  1. Создание статических версий статистики верхнего уровня каждый час или около того - это интенсивно для всех пользователей и всех активов.Итак, как это можно сделать
    регулярно, я не уверен.
  2. Статистика вызовов через AJAX, чтобы их можно было обрабатывать и заполнять (получение статистики верхнего уровня сейчас может занять до 10 секунд длябольший пользователь) после загрузки страницы.Это также может кэшировать статистику в сеансе для сохранения повторяющихся запросов при каждой загрузке страницы.
  3. Запрос выполняется с интервалом в 30 минут, т.е. вы входите в систему, он выполняет запрос, а затем, будем надеяться, будет использовать кэш запросов при каждой загрузке(только 1/2 секунды) до следующего 30-минутного интервала.

Ваши опции 1 и 3 в mySQL известны как материализованное представление MySQL в настоящее время не поддерживает их, ноКонцепция может быть завершена ссылка предоставляет примеры

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

Это действительно зависит от статистики в верхней строке.Вы хотите получить данные в реальном времени с точностью до секунды или допустимы интервалы 10-20 или даже 30 минут?Используя планировщик событий , можно запланировать создание / обновление таблиц (отчетов) отчетов, которые содержат обобщенные данные, чтобы быстрее выполнять запрос.Эти данные затем становятся доступными за доли секунды, так как все работы по подъему тяжестей уже выполнены.Затем вы можете сосредоточиться на индексации этих таблиц, чтобы повысить производительность, не беспокоясь о влиянии на рабочие таблицы.

0 голосов
/ 04 января 2012

Вы находитесь в домене хранилища данных с вашей настройкой. Это означает, что не все правила NF1 применяются. Поэтому мой подход заключается в использовании триггеров для заполнения отдельной таблицы статистики.

...