GoaSkin Geschrieben 14. Juli 2014 Geschrieben 14. Juli 2014 Hallo, ich habe einen Anwendungsfall, bei dem eine MySQL-Datenbank verwendet wird, wobei es eine Tabelle gibt, in der sich derzeit 31 Millionen Datensätze befinden, die anders ausgedrückt etwa 5GB groß ist. Neben schneller Hardware ist es dabei wichtig, dass der Server und die Datenbank sauber konfiguriert ist. Die Maschine verfügt über 32 GB RAM und ein RAID-5 sowie einen 6Core XEON E5 (Ivy). Auf dem Server selbst läuft ein Debian 7, bei dem an der MySQL-Serverkonfiguration keine großen Änderungen vorgenommen wurden; die Tabellen nutzen das InnoDB-Format ohne Feintuning. Es passiert regelmäßig, dass Datenbankabfragen schnarchend langsam sind, dabei aber weder die CPU ausgelastet ist, noch der Arbeitsspeicher sonderlich beansprucht wird. Hat jemand eine Idee, wie man MySQL sinnvoll für solch große Datenbanken konfiguriert? Zitieren
Crash2001 Geschrieben 14. Juli 2014 Geschrieben 14. Juli 2014 Vermutlich ist dann hier das I/O der Flaschenhals - mit anderen Worten die Festplatte, auf die dann dauernd gewartet werden muss. Wie man dem Abhilfe verschaffen kann und ob eventuell eine RAM-Disk, ein RAID aus SSDs oder ein anderer schneller Festplattenverbund sinnvoll ist, das überlasse ich aber eher dann den "Serverjungs". Zitieren
SilentDemise Geschrieben 14. Juli 2014 Geschrieben 14. Juli 2014 und ein RAID-5 mehr als vier platten? sonst hast du dein Problem gefunden Zitieren
Enno Geschrieben 14. Juli 2014 Geschrieben 14. Juli 2014 Bei Abfragen -> Indexe richtig und vernünftig gesetzt? Zitieren
Wuwu Geschrieben 14. Juli 2014 Geschrieben 14. Juli 2014 Es passiert regelmäßig, dass Datenbankabfragen schnarchend langsam sind, dabei aber weder die CPU ausgelastet ist, noch der Arbeitsspeicher sonderlich beansprucht wird. Klingt so als ob es halbwegs nachstellbar ist. When in doubt run procmon. Der kann Dir gewisse Hinweise ueber die Process View geben, wo Dein Flaschenhals liegt. Zitieren
GoaSkin Geschrieben 15. Juli 2014 Autor Geschrieben 15. Juli 2014 Ich habe nun gemäß mehrfach genannten Tipps in MySQL-Foren Folgendes in die Konfiguration eingetragen: innodb_file_per_table innodb_flush_log_at_trx_commit innodb_buffer_pool_size=2G Daraufhin habe ich dann über Nacht einen Dump erstellt, die Datenbank samt Dateistruktur gelöst und neu generiert und den Dump zurückgespielt. Scheint viel zu bringen, wenn die ganzen InnoDB-Tabellen nicht alle in einer riesigen Datei untergebracht sind, die zu dem stets wächst aber niemals schrumpfen kann. Die "globale" Innodb-Datei hatte zuvor eine größe von 18.6GB. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.