Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Datenbankdesign für sehr große Datenmengen

Da Sie gefragt haben, wie große Unternehmen dies (im Allgemeinen) angehen:

Sie haben normalerweise einen dba (Datenbankadministrator), der die Datenbank lebt und atmet, die das Unternehmen verwendet.

Das bedeutet, dass sie Leute haben, die alles wissen, vom optimalen Design der Tabellen über das Profilieren und Optimieren der Abfragen/Indizes/OS/Server bis hin zum Wissen, welche Firmware-Revision des RAID-Controllers Probleme für die Datenbank verursachen kann.

Sie sprechen nicht viel darüber, welche Art von Tuning Sie vorgenommen haben, z. B.

  • Verwenden Sie MyISAM- oder InnoDB-Tabellen? Ihre Leistung (und nicht zuletzt ihre Funktionen) ist für verschiedene Workloads radikal unterschiedlich.
  • Sind die Tabellen gemäß den von Ihnen ausgeführten Abfragen richtig indiziert?
  • Führen Sie EXPLAIN für alle Ihre Abfragen aus - das hilft Ihnen, Schlüssel zu identifizieren, die hinzugefügt/entfernt werden könnten, ob die richtigen Schlüssel ausgewählt sind, und vergleichen Sie Abfragen (SQL lässt Ihnen viele Möglichkeiten, die gleichen Dinge zu erreichen)
  • Haben Sie den Abfrage-Cache optimiert? Bei einigen Workloads kann der Abfrage-Cache (standardmäßig aktiviert) zu einer erheblichen Verlangsamung führen.
  • Wie viel Speicher hat Ihre Box, und ist mysql darauf eingestellt, diesen Vorteil zu nutzen?
  • Verwenden Sie ein auf die Datenbank ausgerichtetes Dateisystem und Raid-Setup?
  • Manchmal ist ein wenig Denormalisierung erforderlich.
  • Verschiedene Datenbankprodukte haben unterschiedliche Eigenschaften, MySQL kann für einige Welten blitzschnell und für andere langsam sein.