Ich bin ein ziemlich großer Neuling, wenn es darum geht, MySQL für die Leistung zu konfigurieren. Und ehrlich gesagt mache ich mir keine Sorgen über die Feinabstimmung, um die Leistung von MySQL bis zum Äußersten zu optimieren, aber ich weiß, dass das Wichtigste, das einige der besten Ergebnisse liefert, das korrekte Einrichten von Caches / Puffern ist.
Ich habe versucht, die Dinge einfach zu halten, indem ich nur InnoDB als Speicher-Engine verwendet habe. Und ich habe einen dedizierten Server für MySQL. Es hat 8 GB RAM, wie soll ich das zuordnen, um die Leistung zu maximieren? Ich möchte in der Lage sein, meine gesamte Datenbank für die beste Leistung in den Speicher einzupassen. Die Datenbank ist ungefähr 5GB groß. Ist das möglich?
Wie viel Speicher sollte ich dem Abfragecache zuweisen? Was kostet der InnoDB-Pufferpool? Was kostet der Rest des Computers (dh Prozesse, die nicht mit MySQL zusammenhängen)? Etc.
Da ich MyISAM nicht verwende, muss ich nicht wirklich viel Speicher im Schlüssel-Cache ablegen, richtig?
IMHO sollten Sie in der Lage sein, mit zu gehen
Dies entspricht 62,5% des Arbeitsspeichers bei ausreichendem Arbeitsspeicher für das Server-Betriebssystem und zusätzlichem Arbeitsspeicher für DB-Verbindungen
@kvisle empfohlen mit mysqltuner.pl. Dieses Skript eignet sich hervorragend, um die Größe des Arbeitsspeichers zu bestimmen, der für join_buffer_size, sort_buffer_size, read_buffer_size und read_rnd_buffer_size reserviert werden soll. Diese 4 zusammenaddierten Puffer werden mit max_connections multipliziert. Diese Antwort wird zu statischen Puffern hinzugefügt (innodb_buffer_pool_size + key_buffer_size). Die kombinierten Summen werden gemeldet. Wenn diese kombinierte Summe 80% des Arbeitsspeichers übersteigt, müssen Sie diese Puffergrößen verringern. mysqltuner.pl wird in dieser Hinsicht sehr hilfreich sein.
Da alle Ihre Daten InnoDB sind, können Sie key_buffer_size (Schlüssel-Cache-Puffer für MyISAM-Indizes) sehr niedrig einstellen (ich empfehle 64 MB).
Hier ist ein Beitrag, den ich in DBA StackExchange erstellt habe, um die empfohlene Größe von innodb_buffer_pool_size zu berechnen .
UPDATE 15.10.2011 19:55 EDT
Wenn Sie wissen, dass Sie über 5 GB Daten verfügen, war meine erste Empfehlung in Ordnung. Ich habe jedoch vergessen, eines hinzuzufügen:
Die Größe der Protokolldatei muss 25% des InnoDB-Pufferpools betragen
UPDATE 2011-10-16 13:36 EDT
Die 25% -Regel basiert ausschließlich auf der Verwendung von zwei Protokolldateien. Es ist zwar möglich, mehrere innodb-Protokolldateien zu verwenden, zwei funktionieren jedoch normalerweise am besten.
Andere haben mit 25% ausgedrückt
Allerdings hat sich fairerweise jemand von der ursprünglichen InnoBase Oy-Firma gegen die 25% -Regel ausgesprochen, weil er einen größeren InnoDB-Pufferpool hat .
Natürlich kann die 25% -Regel nicht funktionieren, wenn sehr viel RAM vorhanden ist. Tatsächlich beträgt die größte zulässige Größe für innodb_log_file_size bei Verwendung von nur 2 Protokolldateien 2047 MB, da die kombinierte Größe der Protokolldatei weniger als 4 GB (4096 MB) betragen muss.
PUNKTFALL: Einer der Kunden meines Arbeitgebers verfügt über einen DB-Server mit 192 GB RAM. Es gibt keine Möglichkeit, 48G-Protokolldateien zu haben. Ich verwende einfach die maximale Dateigröße für eine Innodb-Protokolldatei, 2047M. @ Kvisles Kommentar zu meiner Antwort enthält lediglich einen Link, der besagt, dass Sie sich nicht auf zwei Protokolldateien beschränken müssen. Wenn Sie N Protokolldateien haben, können diese nicht 4 GB umfassen. Meine 25% -Regel ist nur in einer perfekten Welt (DB Server mit 8 GB oder weniger).
quelle