Jey
@Jey
программист, изобретатель, организатор

Что использовать для оптимизации циклов записи базы данных mysql?

Подскажите пожалуйста варианты сокращения циклов записи при использовании базы данных mysql.
Суть ситуации -- есть веб-система, активно использующая базу данных mysql для записи состояний различных датчиков. Для некоторых датчиков хранится история показаний, для некоторых просто обновляется текущее значение из показаний. Всё это происходит очень активно до нескольких десятков UPDATE-ов в секунду. Есть желание перенести систему на платформу Raspberry Pi, но подобная активность очень быстро посадит SD-карту. Вариант с подключением внешнего диска не очень интересен, т.к. теряется компактность и энерго-эффективность конечного решения. Собственно вопрос -- какими методами можно уменьшить физическое обращение к карте памяти?

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

Вариант, который пришёл мне в голову, это при старте переносить всю базу данных в память и время от времени производить процедуру обратного копирования, но может быть есть более элегантный способ, буду рад, если кто-нибудь поделиться.
  • Вопрос задан
  • 2495 просмотров
Пригласить эксперта
Ответы на вопрос 3
@yarofon
Кодописатель, линуксоид-любитель и просто лентяй
Если объем данных небольшой, можно использовать таблицы memory dev.mysql.com/doc/refman/5.5/en/memory-storage-eng... и раз в 15 минут синхронизировать с остальными. Но это требует изменение программного кода..
Ответ написан
Jey
@Jey Автор вопроса
программист, изобретатель, организатор
Сам себе напишу один из вариантов решения -- хранить всю базу данных в памяти (паку данных mysql на tmpfs) и время от времени делать дамп на карточку (можно предварительно сжимать в tgz, чтобы уменьшить размер). При загрузке, соответственно, восстанавливать из последнего сохранённого дампа.
Ответ написан
leahch
@leahch
Я мастер на все руки, я козлик Элек Мэк :-)
Использовать key-value базы данных типа redis и/или mongodb (но это не совсем key-value). Для вашей задачи наверное редис самое оно, и места занимает немного и использование памяти можно ограничить, на флешку сам скидывать будет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы