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

Maximale MySQL-Speichernutzung

Die maximale Speichernutzung von MySQL hängt stark von der Hardware, Ihren Einstellungen und ab die Datenbank selbst.

Hardware

Die Hardware ist der offensichtliche Teil. Je mehr RAM desto besser, schnellere Festplatten ftw . Glauben Sie diesen monatlichen oder wöchentlichen Newslettern jedoch nicht. MySQL skaliert nicht linear – nicht einmal auf Oracle-Hardware. Es ist ein wenig kniffliger als das.

Das Fazit lautet:Es gibt keine allgemeine Faustregel dafür, was für Ihre empfohlen wird MySQL-Setup. Es hängt alles von der aktuellen Nutzung oder den Projektionen ab.

Einstellungen &Datenbank

MySQL bietet unzählige Variablen und Schalter, um sein Verhalten zu optimieren. Wenn Sie auf Probleme stoßen, müssen Sie sich wirklich hinsetzen und das (f'ing) Handbuch lesen.

Was die Datenbank betrifft -- ein paar wichtige Einschränkungen:

  • Tabellen-Engine (InnoDB , MyISAM , ...)
  • Größe
  • Indizes
  • Nutzung

Die meisten MySQL-Tipps zu Stackoverflow informieren Sie über 5-8 sogenannte wichtige Einstellungen. Zunächst einmal sind nicht alle von Bedeutung - z. Es macht wenig Sinn, InnoDB viele Ressourcen zuzuweisen und InnoDB nicht zu verwenden, da diese Ressourcen verschwendet werden.

Oder - viele Leute schlagen vor, die max_connection zu erhöhen Variable -- nun, sie wissen kaum, dass dies auch impliziert, dass MySQL mehr Ressourcen zuweist, um diese max_connections zu bewältigen - falls nötig. Die offensichtlichere Lösung könnte darin bestehen, die Datenbankverbindung in Ihrem DBAL zu schließen oder das wait_timeout zu verringern um diese Threads freizugeben.

Wenn Sie verstehen, was ich meine – es gibt wirklich viel, viel zu lesen und zu lernen.

Motoren

Tabellen-Engines sind eine ziemlich wichtige Entscheidung, viele Leute vergessen diese früh und kämpfen dann plötzlich mit einem 30 GB großen MyISAM Tabelle, die ihre gesamte Anwendung sperrt und blockiert.

Ich will damit nicht sagen, dass MyISAM scheiße ist , aber InnoDB kann so angepasst werden, dass es fast oder fast so schnell reagiert wie MyISAM und bietet so etwas wie Zeilensperren bei UPDATE wohingegen MyISAM sperrt die gesamte Tabelle, wenn in sie geschrieben wird.

Wenn es Ihnen freisteht, MySQL auf Ihrer eigenen Infrastruktur auszuführen, sollten Sie sich vielleicht auch den percona-Server denn neben vielen Beiträgen von Unternehmen wie Facebook und Google (sie wissen es schnell) enthält es auch Perconas eigenen Drop-in-Ersatz für InnoDB , genannt XtraDB .

Siehe meinen Kern für die Einrichtung des Percona-Servers (und -Clients) (auf Ubuntu):http://gist.github .com/637669

Größe

Die Datenbankgröße ist sehr, sehr wichtig - ob Sie es glauben oder nicht, die meisten Leute auf den Intarwebs haben noch nie mit einem großen und schreibintensiven MySQL-Setup gearbeitet, aber diese existieren wirklich. Einige Leute werden trollen und so etwas sagen wie:„Verwende PostgreSQL!!!111“, aber lass uns sie vorerst ignorieren.

Unterm Strich gilt:Nach der Größe zu urteilen, sind Entscheidungen über die Hardware zu treffen. Sie können eine 80-GB-Datenbank mit 1 GB RAM nicht wirklich schnell laufen lassen.

Indizes

Es gilt nicht:je mehr, desto besser. Es müssen nur benötigte Indizes gesetzt und die Verwendung mit EXPLAIN überprüft werden . Hinzu kommt das EXPLAIN von MySQL ist wirklich begrenzt, aber es ist ein Anfang.

Vorgeschlagene Konfigurationen

Über diese my-large.cnf und my-medium.cnf Dateien - ich weiß nicht einmal, für wen diese geschrieben wurden. Rollen Sie Ihre eigenen.

Tuning-Grundlage

Ein guter Anfang ist der Tuning-Primer . Es ist ein Bash-Skript (Hinweis:Sie benötigen Linux), das die Ausgabe von SHOW VARIABLES übernimmt und SHOW STATUS und verpackt es in hoffentlich nützliche Empfehlungen. Wenn Ihr Server einige Zeit gelaufen ist, wird die Empfehlung besser sein, da es Daten gibt, auf denen sie basieren können.

Die Tuning-Fibel ist jedoch keine Zaubersoße. Sie sollten sich dennoch über alle Variablen informieren, die zur Änderung vorgeschlagen werden.

Lesen

Ich empfehle sehr gerne den mysqlperformanceblog . Es ist eine großartige Ressource für alle Arten von MySQL-bezogenen Tipps. Und es ist nicht nur MySQL, sie wissen auch viel über die richtige Hardware oder empfehlen Setups für AWS usw. Diese Jungs haben jahrelange Erfahrung.

Eine weitere großartige Ressource ist planet-mysql , natürlich.