Страница 1 из 1

Что лучше: БД в памяти или на SD карте?

Добавлено: Вс июл 08, 2018 7:56 pm
somik
Изучая проблему периодического пропадания данных на моей Orange Pi PC c Majordomo выяснил, что оказывается БД живёт в памяти, и периодически (раз толи в час, толи в 15 мин, не знаю где посмотреть) дампится на SD-карту. Судя по форумам мотив такого "извращения" - экономия ресурса записи SD-карточки и надёжность хранения.
Основная нагрузка по записи приходится на таблицу phistory. В базу пишу параметры с двух электросчётчиков, каждую секунду. Размер базы увеличивается на 10 мб/неделю. (~60 кб/час)
Т.е. история с дампами не экономит ресурс на запись, а наоборот его расходует с катастрофической скоростью, в тысячи раз превосходящую нормальный режим работы. К тому же, видимо в момент дампирования уже крупной базы происходит зависание системы и крах данных.
Также запись непосредственно на карту памяти производит запись однократно на один сегмент, а дамп постоянно пишется в одно место, замещая старые дампы.

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

Кто знает как это сделать?

Re: Что лучше: БД в памяти или на SD карте?

Добавлено: Вс июл 08, 2018 9:46 pm
Chainik
[Сорри за оффтопик] Если в базу каждую секунду что-то пишется, почему бы не использовать старый добрый HDD. Да, это дороже, чем SD карта, да, более дорогая аппаратная платформа. Но это, при прочих равных, компенсируется большей производительностью, а главное, надежностью хранения данных.
Ну это как ИМХО. Еще раз прошу прощения за оффтоп.

Re: Что лучше: БД в памяти или на SD карте?

Добавлено: Вс июл 08, 2018 11:25 pm
fandaymon
somik писал(а):
Вс июл 08, 2018 7:56 pm

Основная нагрузка по записи приходится на таблицу phistory. В базу пишу параметры с двух электросчётчиков, каждую секунду. Размер базы увеличивается на 10 мб/неделю. (~60 кб/час)
Т.е. история с дампами не экономит ресурс на запись, а наоборот его расходует с катастрофической скоростью, в тысячи раз превосходящую нормальный режим работы. К тому же, видимо в момент дампирования уже крупной базы происходит зависание системы и крах данных.
Логика какая-то странная.... Почему это дамп тратит ресурсы быстрее?! Ну пишет он мегов 200 раз в 15 минут. Ну допустим это даже будет 1 гиг в час. Ресурсы флешки израсходуются часов через 16 * 10000 ... Т.е. только этот дамп израсходует ресурс через 18 лет. Где катастрофа-то?!
А вот если все записи mysql пишет не в память, а сразу на флешку, то флешка вряд ли проработает больше пары месяцев
Другое дело - зачем хранить параметры с двух электросчётчиков, сделанные каждую секунду?!

Re: Что лучше: БД в памяти или на SD карте?

Добавлено: Пн июл 09, 2018 6:21 am
AndrewS
Надо записывать не каждую секунду, а каждые 100Вт, например. Это классика хранения данных.

Re: Что лучше: БД в памяти или на SD карте?

Добавлено: Пн июл 09, 2018 10:47 am
Logrus
выше про логику уже сказали, дополню, то в тлг много про "борьбу" написано мной в том числе, а зачем нет
при большом количестве запросов появляются траблы, большое 200 в сек., 100 это норма
убираю даже не напряжные, если они мне не нужны, зачем занимать тики цп и повышать его температуру и энергопотребление
аналогично с борьбой за размер бд и частотой ее записи, если все настроено и нет сбоев, это можно и уменьшить, сейчас в 4 и 6 раз частота, размер тоже существенно, собственно в конце суток перед работой оптимайзера не превышает 1 мб.
п.с. кста многие при бэкапе большой бд жаловались на траблы

п.п.с. а с "пропаданием" данных нужно разбираться, то куда-то не в ту степь

Re: Что лучше: БД в памяти или на SD карте?

Добавлено: Пн июл 09, 2018 3:46 pm
somik
Физически запись на SD карту происходит при заполнении буфера записи, и обычно он не меньше чем размер блока на SD-карте, Если блок 512 байт, и данные поступают со скоростью 16 байт/секунду (60 кб/час), то физически запись будет осуществляться раз в 30 сек, и нагрузка на карту 1х кратная, и этот блок больше трогаться не будет. Если раз в 15 мин, то каждые 15 мин этот блок будет перезатираться.

округление до 100 вт не приемлемо из за задачи. в сети есть приборы меньшей мощности. Второй счётчик - на солнечной батареи - там вообще весь диапазон 200 вт. Вообщем сокращать объём данных - не приемлемо. На мой взгляд ресурсов Orange PI и 16 gb карты более чем достаточно, при правильных настройках, о которых я и спрашиваю

Re: Что лучше: БД в памяти или на SD карте?

Добавлено: Пн июл 09, 2018 3:49 pm
somik
Chainik писал(а):
Вс июл 08, 2018 9:46 pm
[Сорри за оффтопик] Если в базу каждую секунду что-то пишется, почему бы не использовать старый добрый HDD. Да, это дороже, чем SD карта, да, более дорогая аппаратная платформа. Но это, при прочих равных, компенсируется большей производительностью, а главное, надежностью хранения данных.
Ну это как ИМХО. Еще раз прошу прощения за оффтоп.
Читал на форумах как аргумент - в видеорегистраторах HD-видео поток пишется на SD-карту по кругу годами, и к поломке карты это не приводит.
А насчёт надёжности HDD - у меня за 10 лет в raid массиве вылетело 10 дисков. Вот вам и надёжность. Её нет у HDD. Да и тогда теряется прелесть мажордомо в размещении на маленьком дешёвом одноплатнике

Re: Что лучше: БД в памяти или на SD карте?

Добавлено: Пт авг 03, 2018 7:50 pm
immortal
somik писал(а):
Вс июл 08, 2018 7:56 pm
Изучая проблему периодического пропадания данных на моей Orange Pi PC c Majordomo выяснил, что оказывается БД живёт в памяти, и периодически (раз толи в час, толи в 15 мин, не знаю где посмотреть) дампится на SD-карту. Судя по форумам мотив такого "извращения" - экономия ресурса записи SD-карточки и надёжность хранения.
Основная нагрузка по записи приходится на таблицу phistory. В базу пишу параметры с двух электросчётчиков, каждую секунду. Размер базы увеличивается на 10 мб/неделю. (~60 кб/час)
Т.е. история с дампами не экономит ресурс на запись, а наоборот его расходует с катастрофической скоростью, в тысячи раз превосходящую нормальный режим работы. К тому же, видимо в момент дампирования уже крупной базы происходит зависание системы и крах данных.
Также запись непосредственно на карту памяти производит запись однократно на один сегмент, а дамп постоянно пишется в одно место, замещая старые дампы.

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

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

вернуть обратно базу на карту памяти можно отключив /etc/init.d/prepare-dirs и изменив путь к базе в конфиге mysql

у меня карты с базой мд прожили самое долгое пол года, в режиме tmpfs с сентября 2016 самое долгое пока работает.