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.
- Partycje po SignalId - wtedy każda partycja przechowywałaby dane jednego sygnału, łatwość w utrzymaniu bo nowe sygnały dochodzą bardzo rzadko?
- Partycje po roku - wtedy każda partycja będzie miała dane wszystkich sygnałów z roku - chyba szybsze w bieżących zapytaniach?
- 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.