Bazadanych maria-db w RAM

Cześć,
Znalazłem taki dodatek: GitHub - lmagyar/homeassistant-addon-mariadb-inmemory: In-memory fork of the official Home Assistant MariaDB add-on https://github.com/home-assistant/addons/tree/master/mariadb
Służy on do tego aby ulokować bazę danych na ram dysku (tmpfs), dzięki temu uzyskujemy bardzo szybki dostęp do bazy (prędkość odczytu z ram jest dużo większa niż najszybszych dysków nvme). Pytanie mam czy próbował ktoś tego, teoretycznie rozmiar mojej 31 dniowej bazy danych odczytany w ten sposób:

  - platform: sql
    db_url: mysql://homeassistant:homeassistant@core-mariadb/homeassistant?charset=utf8
    queries:
      - name: 'DataBase rozmiar'
        query: 'SELECT table_schema "database", Round(Sum(data_length + index_length) / 1024 / 1024, 1) "value" FROM information_schema.tables WHERE table_schema="homeassistant" GROUP BY table_schema;'
        column: 'value'
        unit_of_measurement: MB

Wynosi 900MB (nie zapisuje wszystkiego do db tylko to co mnie interesuje), w sumie nie zależy mi np. na historii czujników temperatury, więc nawet jak je stracę to się nic nie stanie - najbardziej zależy mi na panelu energii aby danych nie stracić, a pozostałe czujniki mam i tak w influx, próbował ktoś tego rozwiązania (podobno dobre na Rpi z kartą sd), mam u siebie 8GB ram dostępne HA zużywa:
image
Więc spokojnie na bazę mogę mu oddać 3GB, chciałbym dowiedzieć się, jak to działa w praktyce jeżeli ktoś używa aby nie tracić niepotrzebnie czasu na zabawy z tym, np. jeżeli są same problemy, a to rozwiązanie ma więcej minusów niż plusów w postaci bardzo szybkiej bazy danych :slight_smile:

Temat na forum HA dla zainteresowanych: In-memory MariaDB (MySQL) add-on for recorder/history integration - #20 by lmagyar1973 - Share your Projects! - Home Assistant Community

  1. Co się dzieje z RAM w wypadku utraty ZASILANIA?
  2. Czy szybki dysk SSD nie wystarczy?

Czytałem kiedyś ten poradnik i nawet mnie inspiruje.

Wiem, co się dzieje z RAM po zdjęciu zasilania, ale wszystko i tak działa na UPS, szybki SSD i tak zawsze będzie wolniejszy od RAM.
W pracy używam komputerów przemysłowych opartych na słabym Atomie, nie mają one dysków, a karty pamięci więc aby karty pamięci nie umierały od zapisów są w trybie tylko do odczytu, a cały system ładuje się do dysku ram, chodzi to bardzo bardzo płynnie w porównaniu do tego jak chodziło to na karcie pamięci (CFast więc i tak szybkiej karcie). Dlatego, pomysł wrzucenia bazy danych, która nie ukrywajmy jak ucieknie nic się nie stanie, a może mocno poprawić wydajność, często aplikacja na telefonie czy strona w przeglądarce ładuje się ok 30s - a problem jest z odczytem danych, bo obciążenie procesora jest na poziomie 27-30%, wszystko pracuje na dysku ssd wprawdzie msata, ale nie mam złącza m.2 aby wymienić go, natomiast nie chce spędzać nie wiadomo ile czasu na testy żeby to sprawdzić, a potem finalnie jeszcze okaże się, że to nie daje spodziewanego efektu, stąd pytam.

Linkowane rozwiązania bazują na pomyśle używania cyklicznego synchronizowania danych w ram-disk z dyskiem twardym. Więc ewentualnej utracie ryzykujemy dane tylko z cyklu tej synchronizacji.
Kwestią osobistą jest potrzeba częstego przeglądania danych w HA. Jak dla mnie DB w ram-disk może być raczej ciekawym eksperymentem niż potrzebą w codziennym użytkowaniu HA.

1 polubienie

W moim przypadku coś jest nie tak z tą bazą danych ale nie mogę od dłuższego czasu dojść co. Jak mam bazę za ostatnie 3-7 dni to system działa bardzo bardzo szybko, ale jak ustawię purge_keep_days na 30 dni to potrafi się ładować po 10-30s, zależy mi na tym, aby w bazie był ostatni miesiąc dla wyciągania średnich danych z miesiąca. W sumie baza za 30 dni ma ok: ~3,871,273 rekordów i ~880MB, dla 7 dni liczba rekordów jest poniżej miliona.

Nie wiem jaki sposób instalacji HA masz u siebie ale wydaje mi się, że rozwiązaniem na opisywane bolączki jest zewnętrzna baza danych, niezależna od HA. Osobiście mam InfluxdDB w dokerowym kontenerze.

HAOS na dedykowanym komputerze, baza to maria z dodatków w ha, oraz influx+grafana, też z dodatków.

Moja baza to średnio
Screenshot - 11.08.2023 , 12_09_48
Nie widzę jakiś zacięć .
Recorder masz jakoś ustawiony czy ładujesz wszystko jak leci ?

db_url: !secret mariadb_url
purge_keep_days: 30
auto_purge: true
include:
  domains:
exclude:
    domains:
      - automation
      - weblink
      - updater
      - media_player

Grafana lubi zjadać dysk i pamięć.

Z rekordera mam wykluczone prawie połowę rzeczy, które są tam niepotrzebne, podobnie z history.
Właśnie czy włączona grafana czy wyłączona (wtedy tylko brak ładowania wykresów) czas ładowania strony podobny - pierwsze wczytanie trwa właśnie do 30s, a potem przełączanie między zakładkami idzie szybko i gładko - testowałem z większą bazą mariadb i mniejszą, wyłączony influx i grafana i różnicy między włączoną grafaną i influx nie było, ale była różnica w zależności od wielkości bazy mariadb, muszę spróbować użyć bazy mariadb zapisanej na innym serwerze, wczytywanej po sieci - chociaż nie wierze w przyspieszenie, oraz przy chwili wolnego czasu tej bazy zapisanej w ram.