Gast
#5995881
Hallo zusammen, ich versuche derzeit sekündlich in einer MariaDB abgelegte Messwerte mit Hilfe von Grafana darzustellen. Die Performance gestaltet sicher allerdings trotz performanter Hardware inkl. SSD als Speichermedium eher problematisch. Die Daten der Sensoren liegen in einer Tabelle mit InnoDB-Engine und dem folgenden Schema: id, int, 10, primary, auto incr. zeit, datetime, index unix_timestamp, int, 11, index temp, float pressure, float humidity, float windspeed, float rain, float Derzeit enthält die Tabelle etwa 60 Millionen Datensätze. Eine Änderung des Layouts ist nicht vorgesehen. Für die Spalte mit dem Zeitstempel, über den die Daten später selektiert werden, wurde bereits einen Index angelegt, um die Antwortzeit zu verkürzen. Die Messwerte werden für die Darstellung in Grafana zu Durchschnittswerten zusammengefasst. Je nach Größe des zur Ansicht gewählten Zeitraums, liegt die Antwortzeit bis alle Darstellungen aktualisiert sind allerdings über einer Minute. Der Test der in Grafana generierten SQL Abfragen mit vorangestelltem "explain" zeigt, dass der Index bei der Abfrage verwendet wird. Daher stellt sich mir die Frage, an welcher Stelle noch Optimierungspotenzial liegt. Eine Änderung des Datentyps von Decimal auf Float brachte nur eine sehr gerine Verbesserung. Auch die Nutzung des unix_timestamps brachte wenig Performance. Trotz der nicht geplanten Änderung der zu speichernden Daten: Wäre ein Schema der Form Zeitpunkt, Sensor, Messwert sinnvoller und wie würde sich das auf die Performance auswirken? In der Form würden ja entsprechend mehrere Zeilen mit gleichem Zeitstempel eingefügt, dafür sind allerdings weniger Spalten notwendig. In der Konfigurationsdatei habe ich den Wert für innodb_buffer_pool_size bereits erhöht. Gibt es aus eurer Sicht noch Ansatzpunkte, welche auf die Performance einen maßgeblichen Einfluss haben? Nach Möglichkeit sollen die Daten in der MariaDB verbleiben und der Umstieg auf eine andere Datenbank vermieden werden. Vielen Dank eure Zeit!