Я делаю таблицу mysql и кодирую API для получения и хранения данных для 1000 с лишним устройств каждую секунду. Каждое устройство отправляет более 100 точек данных на этот сервер PHP. Я тестирую 360 устройств с 10 точками данных в каждом, и это хорошо при 3600 счетах записи в секунду, это понятно. Тем не менее, я заметил, что количество операций записи увеличивается в секунду с увеличением количества устройств. Я пытаюсь погуглить насыщенную точку по количеству записей в секунду, но не могу их найти. Есть ли максимальное количество записей в секунду? Какова производительность системы, когда количество записей достигает 100 тысяч в секунду. Кто-нибудь эксперт по базе данных MySQL, пожалуйста, посоветуйте мне, спасибо.
Вы может быть быть в состоянии найти точку отсчета, которая показывает некоторое большое число в очень ограничены прецедент. Но слишком много факторов влияют на число операций записи в секунду:
Я слышал о тесте, показывающем миллион «транзакций» в секунду в 5,7.
Но получить 100K довольно сложно. Вот что я рекомендую:
PRIMARY KEY
так что вставки могут быть «в конце таблицы».innodb_flush_log_at_trx_commit=2
, sync_binlog
может не иметь значения из-за дозирования.Что касается того, как быстро собрать много данных, возможно, с несколькими потоками, прочитайте мой «Высокая скорость приема пищи» блог. В нем говорится о пинг-понге для пары таблиц — одна для получения данных, другая для обработки (нормализации, сжатия, суммирования) и добавления в таблицу фактов.
Другая проблема … Вы пытаетесь вставлять несколько МБ в таблицу каждую секунду; это составляет почти терабайт в день. Как долго вы будете хранить данные? Сколько места на диске у вас есть? Если вы будете удалять «старые» данные, то PARTITION BY RANGE
является обязательным. мой Разделение блога подробно рассказывает о том, как сделать DROP PARTITION
а также REORGANIZE PARTITION
делать удаления очень дешево.
Это приводит к другому предложению — обрабатывать данные, но не сохранять их. Хорошо, может быть, вам нужны данные за час для обработки. В этом случае все вышеизложенное обсуждение все еще применяется (за исключением INDEX
ограничения). И мой скоростной прием пищи, вероятно, все еще стоит делать. И вы можете пинг-понг раз в час. Один час может быть 10 ГБ — этого достаточно для хранения в ОЗУ, что позволяет избежать узких мест ввода-вывода.
Также обратите внимание на базовый размер экземпляра EC2 в предоставленной RDS.