Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

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". :rolleyes:

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.

  • Autor

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.