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

Проблемы/вопросы, связанные с запуском под различными платформами и конфигурациями.

Модераторы: Bagir, Ivan, Vit, immortal

Ответить
somik
Сообщения: 13
Зарегистрирован: Сб май 19, 2018 6:36 am
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение somik » Вс июл 08, 2018 7:56 pm

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

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

Кто знает как это сделать?
Chainik
Сообщения: 586
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 67 раз
Поблагодарили: 162 раза

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

Сообщение Chainik » Вс июл 08, 2018 9:46 pm

[Сорри за оффтопик] Если в базу каждую секунду что-то пишется, почему бы не использовать старый добрый HDD. Да, это дороже, чем SD карта, да, более дорогая аппаратная платформа. Но это, при прочих равных, компенсируется большей производительностью, а главное, надежностью хранения данных.
Ну это как ИМХО. Еще раз прошу прощения за оффтоп.
За это сообщение автора Chainik поблагодарил:
somik (Пн июл 09, 2018 3:46 pm)
Рейтинг: 1.43%
fandaymon
Сообщения: 526
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 23 раза
Поблагодарили: 223 раза

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

Сообщение fandaymon » Вс июл 08, 2018 11:25 pm

somik писал(а):
Вс июл 08, 2018 7:56 pm

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

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

Сообщение AndrewS » Пн июл 09, 2018 6:21 am

Надо записывать не каждую секунду, а каждые 100Вт, например. Это классика хранения данных.
Предупредите, если за мной пора будет выехать.
ARMBIAN 5.38 stable Debian GNU/Linux 9 (stretch) 4.14.18-sunxi
System load: 0.25 0.38 0.46 Up time: 3 days
Memory usage: 65 % of 2014MB CPU temp: 37°C
Orange Pi Plus 2 H3 Quad Core 1.6GHZ 2GB
Logrus
Сообщения: 1081
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 211 раз
Поблагодарили: 158 раз

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

Сообщение Logrus » Пн июл 09, 2018 10:47 am

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

п.п.с. а с "пропаданием" данных нужно разбираться, то куда-то не в ту степь
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо - ТАМ =>
connect Raspberry Pi3, с образа от Сергея 3.31, PHP 7
somik
Сообщения: 13
Зарегистрирован: Сб май 19, 2018 6:36 am
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение somik » Пн июл 09, 2018 3:46 pm

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

округление до 100 вт не приемлемо из за задачи. в сети есть приборы меньшей мощности. Второй счётчик - на солнечной батареи - там вообще весь диапазон 200 вт. Вообщем сокращать объём данных - не приемлемо. На мой взгляд ресурсов Orange PI и 16 gb карты более чем достаточно, при правильных настройках, о которых я и спрашиваю
somik
Сообщения: 13
Зарегистрирован: Сб май 19, 2018 6:36 am
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение somik » Пн июл 09, 2018 3:49 pm

Chainik писал(а):
Вс июл 08, 2018 9:46 pm
[Сорри за оффтопик] Если в базу каждую секунду что-то пишется, почему бы не использовать старый добрый HDD. Да, это дороже, чем SD карта, да, более дорогая аппаратная платформа. Но это, при прочих равных, компенсируется большей производительностью, а главное, надежностью хранения данных.
Ну это как ИМХО. Еще раз прошу прощения за оффтоп.
Читал на форумах как аргумент - в видеорегистраторах HD-видео поток пишется на SD-карту по кругу годами, и к поломке карты это не приводит.
А насчёт надёжности HDD - у меня за 10 лет в raid массиве вылетело 10 дисков. Вот вам и надёжность. Её нет у HDD. Да и тогда теряется прелесть мажордомо в размещении на маленьком дешёвом одноплатнике
immortal
Сообщения: 1038
Зарегистрирован: Вт янв 29, 2013 9:16 am
Откуда: Белозерск
Благодарил (а): 14 раз
Поблагодарили: 352 раза
Контактная информация:

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

Сообщение immortal » Пт авг 03, 2018 7:50 pm

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 самое долгое пока работает.
Lubuntu на cubieboard2 + ds9490R
DietPi на Orange Pi PC + 1wire на esp8266 с прошивкой Homes-smart.ru
Ответить