Wątek przeniesiony 2020-03-10 23:52 z Mobilne przez somekind.

Partycje MariaDB, jaki rodzaj

0

Siemka
Nie wiem czy to pytanie ma sens bez dokładnych informacji o danych ale...

Mam tabelę, która przechowuje wartości pomiarów dla różnych sygnałów (temperatury, ciśnienia itp).

TABLE `signalvalues` (
  `Id` bigint(11) NOT NULL AUTO_INCREMENT,
  `DataGodzina` datetime NOT NULL,
  `Value` decimal(12,3) NOT NULL,
  `SignalId` int(11) NOT NULL,
  `DateCreated` datetime DEFAULT NULL,
  `DateTimeInt` bigint(20) DEFAULT NULL,
+ indeksy itp
)

Sygnałów jest ok 40 i każdy z nich generuje 1,5 mln rekordów pomiarów rocznie. Przez 3 lata trochę się nazbierało.
Myślę nad partycjonowanie i nie wiem jak będzie lepiej.

  1. Partycje po SignalId - wtedy każda partycja przechowywałaby dane jednego sygnału, łatwość w utrzymaniu bo nowe sygnały dochodzą bardzo rzadko?
  2. Partycje po roku - wtedy każda partycja będzie miała dane wszystkich sygnałów z roku - chyba szybsze w bieżących zapytaniach?
  3. Jeszcze inaczej?

Zapytanie o te dane są zawsze z SignalId oraz zakresem daty i godziny (kolumna DateTimeInt). W 99% zapytanie dotyczą bieżących danych (ostatni tydzień) lub danych z okresu ostatnich 3 miesięcy.

0

To po co to partycjonować jak używasz tylko wierzchołka. Zarchaizuje poprzednie dwa lata i już powinno być ok. Jak nie to partycjonować powinieneś po SignalId i po dacie możesz nawet zejść do miesiąc a jak używasz tylko 3 ostatnich miesięcy. Ale wydaje mi się, że archiwizacja byłaby lepsza do tego typu danych.

0

No ale jest ten 1%, w którym starsze dane będą potrzebne. Chyba nawet do raportow wymaganych przepisami.

Po SignalId i po dacie to rozumiem, że subpartycje. Tak?

0

Archiwizacja to nie usuwanie. Rzucasz je do innej bazy lub plików i w razie potrzeby do nich siegasz. Poczytałem o tym pyrtycjonowaniu w Maria db i według mnie powinno być to zrobione po dacie z kluczem na miesiąc.

0

Partycjonowanie nic nie daje jeżeli zapytania korzystają z indeksów (w innych bazach są indeksy lokalne to wtedy tak).
Jeżeli raporty robią pełne skanowanie to wtedy warto zrobić partycje po dacie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1