Хорошо, во-первых, я знаю, что люди скажут «зависит от данных, оборудования сервера и т. Д.» *
Я строю систему, в которой клиенты подключаются и отправляют мне данные. Эти данные обрабатываются, а затем в MySQL вставляется много строк. В то же время пользователи могут использовать наш веб-интерфейс для выполнения запросов к данным. Иногда запросы слишком медленные, чтобы возвращать результаты (100 - 200 секунд). Я знаю, что, возможно, есть некоторая оптимизация индекса и другие вещи, которые мы можем сделать, но я считаю, что отчасти проблема заключается в конкуренции между всеми вставками и запросами выбора, отправленными пользователем.
Существует ли общая архитектура / дизайн инфраструктуры, которая используется в этой ситуации для повышения производительности? Например, я думал о том, чтобы иметь два экземпляра mysql, в которых мастер получает все вставки, а ведомый обрабатывает запросы, но будет ли это меньше страдать от блокировок и конфликтов или это будет в основном то же самое, что и наличие одного экземпляра mysql? Я не эксперт по базам данных и большим наборам данных, поэтому любые ресурсы, которые вы можете предоставить, будут очень полезны. У меня есть книга по быстродействию MySQL, но я надеюсь получить от сообщества некоторую информацию.
16 ГБ оперативной памяти, 8 процессоров, Ubuntu, около 10 ГБ данных прямо сейчас, но растет довольно быстро. Использование innodb, но, вероятно, скоро начнёт использовать Percona Server, чтобы посмотреть, улучшится ли он вообще.