Ist das Tuning der innodb_buffer_pool_size für Solaris ZFS wichtig?
Frage
Wir führen eine moderate Größe (350 GB) mit einigen ziemlich großen Tischen (ein paar hundert Millionen Zeilen, 50 GB) auf einem angemessen großen Server (2 x Quad-Core-Xeons, 24-GB-RAM, 2,5 "10K-Festplatten in RAID10 aus.), und bekommen einige ziemlich langsame Einsätze (z. B. einfacher Einsatz einer einzelnen Zeile, die 90 Sekunden dauert!).
Unsere Innodb_BUFFER_POOL_SIZE ist auf 400 MB eingestellt, was normalerweise für diese Art von Setup viel zu niedrig ist.Unser Hosting-Anbieter berät jedoch, dass dies beim Laufen auf ZFS irrelevant ist.Ist er richtig?
(Entschuldigung für den Doppelbeitrag auf https://dba.stackkexchange.com/questions/1975/i-tuning-the-innodb-buffer-pool-size-important-on-solaris-zfs , aber ich bin mir nicht sicher, wie groß ich binDas Publikum ist da drüben!)
Lösung
Ich würde den InnoDB_BUFFER_POOL_SIZE immer noch viel höher setzen, dass 400m. Der Grund? Der InnoDB-Pufferpool speichert immer noch die Daten- und Indexseiten, die Sie häufig auf Techniken benötigen.
Führen Sie diese Anfrage aus, um die empfohlene Innodb_BUFFER_POOL_SIZE in MB zu erhalten:
select concat (runde (kbs / macht (1024, wenn (pw <0,0, wenn (pw> 3,0, pw))) + 0,49999), substr ('kmg', if (pw <0, 0, if (pw> 3,0, pw)) + 1,1)) empfohlene_innodb_buffer_pool_size von (select sum (data_length + index_length) kbs von information_schema.tables, wo Motor= 'Innodb') a, (wählen 2 pw) b;
Verwenden Sie einfach das Ergebnis dieser Abfrage oder 80% des installierten RAMs (in Ihrem Fall 19660 m), je nachdem, welcher immer kleiner ist.
Ich würde auch den Innodb_Log_File_size auf 25% der Innodb-Puffer-Poolgröße setzen. Leider beträgt der Maximalwert von InnoDB_LOG_FILE_SIZE 2047M. (1m kurz von 2G) Setzen Sie also Innodb_log_File_size auf 2047 m Set, da 25% von InnoDB_BUFFER_POOL_SIZE meiner empfohlenen Einstellung 4915m beträgt.
Noch ein weiteres Empfehlungen ist auf Säure-Compliance deaktivieren . Verwenden Sie entweder 0 oder 2 für INNODB_FLUSH_LOG_AT_TRX_COMMIT (Standardeinstellung ist 1, der saure Compliance unterstützt) p>
Andere Tipps
lohnt sich möglicherweise, Slow-MySQL-einfügen , wenn Sie es noch nicht getan haben. Auch diesen Link in die MySQL-Dokumente auf der Angelegenheit - insbesondere in Bezug auf die Überlegung einer Transaktion, wenn Sie mehrere Einsätze an einen großen Tisch ausführen.
relevanter ist Dieser MySQL-Artikel über die Leistung von Innodb und ZFS was speziell die Pufferbeckengröße betrachtet.