MySQL maximale Speichernutzung
Ich würde gerne wissen, wie ist es möglich, eine Obergrenze für die Menge an Speicher verwendet MySQL auf einem Linux-server.
Jetzt wird MySQL weiterhin mit dem Speicher bei jeder neuen Abfrage angefordert, so dass es schließlich zuwenig Arbeitsspeicher ausgeführt wird. Gibt es eine Möglichkeit zu beschränken, so dass nicht mehr als diese Menge verwendet wird, die von MySQL?
InformationsquelleAutor der Frage | 2009-07-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
MySQL die maximale Speichernutzung sehr viel hängt von der hardware, Ihre Einstellungen und die Datenbank selbst.
Hardware
Die hardware ist der offensichtliche Teil. Je mehr RAM desto besser, schnellere Festplatten ftw. Glaube nicht, dass die monatlichen oder wöchentlichen news-letters obwohl. MySQL nicht skaliert linear, auch nicht auf Oracle-hardware. Es ist ein wenig komplizierter als das.
Die bottom line ist: es gibt keine Faustregel für das, was ist zu empfehlen für den Ihre MySQL-setup. Es hängt alles von der aktuellen Nutzung oder der Projektionen.
Einstellungen & Datenbank
MySQL bietet unzählige Variablen und switches zu optimieren Ihr Verhalten. Wenn Sie laufen in Probleme, die Sie wirklich brauchen, um sich hinzusetzen und Lesen Sie die (f ' Ing) Handbuch.
Als für die Datenbank-ein paar wichtige Einschränkungen:
InnoDB
InnoDB
...)Meisten MySQL-Tipps auf stackoverflow wird Ihnen sagen, über 5-8 sogenannten wichtigen Einstellungen. First off, nicht alle Materie - z.B. die Zuweisung einer Menge von Ressourcen zu InnoDB und nicht mit InnoDB nicht viel Sinn machen, weil diese Ressourcen verschwendet werden.
Oder - eine Menge Leute vorschlagen, die
max_connection
variable -- gut, wenig wissen Sie, es bedeutet auch, dass MySQL mehr Ressourcen zuweisen sorgen diesemax_connections
-- wenn überhaupt nötig. Die naheliegendere Lösung sein könnte, um zu schließen Sie die Datenbank-Verbindung in Ihrem DBAL oder senken derwait_timeout
zu frei diese threads.Wenn Sie fangen meine drift-es gibt wirklich viel, viel zu Lesen und zu lernen.
Motoren
Tisch-Motoren sind eine ziemlich wichtige Entscheidung, die viele Menschen vergessen, über diejenigen, die früh auf, und dann finden sich plötzlich im Kampf mit einer 30 GB großen
InnoDB
Tabelle, die sperrt und blockiert Ihre gesamte Anwendung.Ich will nicht sagen, dass InnoDB saugtaber
InnoDB
können optimiert werden, um reagieren fast oder fast genauso schnell wieInnoDB
und bietet so etwas als row-locking aufUPDATE
in der Erwägung, dassInnoDB
sperrt die gesamte Tabelle, wenn es geschrieben wird.Wenn Sie frei führen Sie MySQL auf Ihrer eigenen Infrastruktur, können Sie auch prüfen wollen, die percona serverda unter anderem eine Menge von Beiträgen, die von Unternehmen wie Facebook und Google (Sie wissen schnell), es enthält auch Percona eigenen drop-in-Ersatz für
InnoDB
genanntXtraDB
.Siehe meine Kernaussage für percona-server (und -client) Installation (auf Ubuntu): http://gist.github.com/637669
Größe
Größe der Datenbank ist sehr, sehr wichtig-ob Sie es glauben oder nicht, die meisten Menschen auf der Intarwebs noch nie behandelt eine große und schreiben intensiven MySQL-setup-aber diese existieren wirklich. Einige Leute troll und sagen Sie etwas wie, "PostgreSQL Verwenden!!!111", aber wir ignorieren Sie für jetzt.
In der unteren Zeile ist: geht man von der Größe, die Entscheidung über die hardware gemacht werden. Sie können nicht wirklich eine 80 GB-Datenbank laufen schnell auf 1
GB RAM.
Indizes
Ist es nicht: je mehr, desto besser. Nur Indizes erforderlich sind, festgelegt werden und-Nutzung muss überprüft werden mit
EXPLAIN
. Hinzu kommt, dass die MySQL -EXPLAIN
ist wirklich begrenzt, aber es ist ein Anfang.Empfohlenen Konfigurationen
Über diese
my-large.cnf
undmy-medium.cnf
Dateien-ich weiß gar nicht, wer diese geschrieben wurden. Rollen Sie Ihre eigenen.Tuning-primer
Einen guten start ist die tuning primer. Es ist ein bash-script (Tipp: Sie müssen linux), die die Ausgabe von
SHOW VARIABLES
undSHOW STATUS
und wickelt es in hoffentlich nützliche Empfehlung. Wenn der server lief einige Zeit die Empfehlung, besser zu sein, da wird die Daten auf der Basis von.Tuning-primer ist keine Magische Soße wenn. Sollten Sie immer noch Lesen, auf alle Variablen, die es schlägt vor, zu ändern.
Lesen
Mag ich wirklich empfehlen mysqlperformanceblog. Es ist eine großartige Ressource für alle Arten von MySQL-Tipps. Und es ist nicht nur MySQL, Sie wissen auch viel über die richtige hardware oder empfehlen setups für AWS, etc.. Diese Jungs haben Jahre und Jahre der Erfahrung.
Eine weitere große Ressource ist planet-mysqlnatürlich.
InformationsquelleAutor der Antwort Till
Verwenden wir diese Einstellungen:
für einen server mit folgenden Spezifikationen:
InformationsquelleAutor der Antwort Ignacio Pascual
Datenbank memory-Nutzung ist ein Komplexes Thema. Die MySQL Performance Blog macht einen guten job für Ihre Frage, und listet viele Gründe, warum es äusserst unpraktisch, zu "reservieren" Speicher.
Wenn Sie wirklich wollen, zu verhängen eine harte Grenze, Sie könnte tun, aber Sie würde tun müssen, es auf OS-Ebene, da es keine built-in-Einstellung. In linux, die Sie verwenden könnten,ulimitaber Sie würden wahrscheinlich haben, um die Art und Weise ändern MySQL gestartet, um zu verhängen.
Die beste Lösung ist, Stimmen Sie Ihre server down, so dass eine Kombination der üblichen MySQL-Speicher-Einstellungen führen in der Regel niedriger Speichernutzung von Ihrer MySQL-installation. Das wird natürlich negative Auswirkungen auf die Leistung Ihrer Datenbank, aber einige der Einstellungen, die Sie optimieren können, in
my.ini
sind:Würd ich es starten und sehen, ob Sie die Ergebnisse, die Sie wollen. Es gibt viele Artikel gibt zum anpassen der MySQL-Speicher-Einstellungen.
Edit:
Beachten Sie, dass einige Variablennamen geändert haben sich in der neueren 5.1.x-Versionen von MySQL.
Beispiel:
Ist jetzt:
InformationsquelleAutor der Antwort zombat
mysqld.exe war mit 480 mb RAM. Ich fand, dass ich Sie diesen parameter, um meine.ini
reduzierten Speicherverbrauch von 400.000+ kb runter auf 105.000 kb
InformationsquelleAutor der Antwort Sarvar Nishonboyev
in
/etc/my.cnf
:Gute Arbeit, die auf server mit 256 MB Speicher.
InformationsquelleAutor der Antwort shilovk