Обработка больших наборов данных из MySQL в PHP, а затем для клиента в JSON - PullRequest
2 голосов
/ 05 июля 2011

Ситуация: Мне нужно получить большие объемы данных из базы данных (~ 150k +).Затем, используя PHP, я делю эти данные на основе суточной цифры и подсчитываю ее (1-е: ~ 10 КБ, 2-е: ~ 15 КБ и т. Д.), А затем увеличиваю другое значение из дневных цифр.И после этого мне нужно отформатировать всю эту информацию в массив JSON, вернуться к клиенту и отобразить график этой статистики.

Теперь я почти уверен, что все это может быть хорошо обработано PHP, ноэто, вероятно, создаст большую нагрузку на сервер + пропускную способность, особенно если клиент продолжает обновлять страницу для просмотра обновленной статистики.Их также около 5 000 активных пользователей в день, так что их будет много выборочных данных.

Каков наилучший способ справиться с этим?

Примечание: сервер имеет 4 ГБ оперативной памяти DD3.

Ответы [ 2 ]

2 голосов
/ 05 июля 2011

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

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

150,000 rows * 6 times per minute * 5000 users = 4.5 billion rows fetched

до

150,000 rows * 1 times per minute * 500 users = 75 million rows fetched.

(например, 1/300 выбранных строк).

0 голосов
/ 05 июля 2011

Краткий ответ: не выполнять вычисления каждый раз;сохраните результаты расчета в таблице базы данных и верните эти результаты.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...