Am 15. März 2012 beantwortete ich diese Frage: MySql empfahl Hardware .
In meiner Antwort erwähnte ich einen Kunden, der bis heute im Webhosting-Unternehmen meines Arbeitgebers tätig ist. Derzeit werden 3 DB-Server in Circular Replication ausgeführt. Jeder DB Server hat:
- MySQL 5.5.9
- 192 GB RAM
- 162 GB InnoDB-Pufferpool
- Dual Hexacore (das ist richtig, 12 CPUs)
- 1,8 TB Festplattenvolumen
- 528 mandantenfähige Datenbanken
- 500 GB InnoDB-Daten
- innodb_file_per_table aktiviert
Ich habe sie eingestellt
innodb_read_io_threads = 64
innodb_write_io_threads = 64
innodb_thread_concurrency = 0
innodb_buffer_pool_size = 162G
innodb_buffer_pool_instances = 2
innodb_log_file_size = 384M
Fazit: Sie haben die Kerne und 128G RAM? Worauf wartest du ? Dreh es auf und hab Spaß. Mein Kunde ist seit März 2011 mit diesen Einstellungen gegen diese Hardware fast verblüfft. Sie werden begeistert sein !!!
VORBEHALT
Abgesehen von Scherzen sollten Sie vorsichtig sein, wenn Sie mit VMs (VMWare, AWS, andere Cloud-basierte MySQL-Instanzen) oder Standardhardware arbeiten . Bei so viel Feuerkraft in Bare-Metal sollten Sie diese Einstellungen jedoch unbedingt ausnutzen, da jede Version von MySQL vor MySQL 5.5 mit InnoDB mit einem Thread funktioniert. Wenn Sie MySQL 5.1 haben, muss das InnoDB-Plugin (ab MySQL 5.1.38) installiert und dann festgelegt werden. Alle Percona Server 5.1-Binärdateien verfügen bereits über diese. Da Sie über MySQL 5.5 verfügen, werden diese Einstellungen nativ installiert und in vielerlei Hinsicht getestet. Sie müssen nur die Verantwortung für die Optimierung der neuen InnoDB-Einstellungen übernehmen.
Weitere Informationen zum Festlegen der neuen Einstellungen von InnoDB finden Sie in meinen anderen Beiträgen:
UPDATE 2013-01-18 21:52 EDT
Sie müssen den Stier bei den Hörnern packen und einige Benchmarks setzen. Gehen wir historisch zurück. innodb_read_io_threads und innodb_writes_io_threads wurden nicht mit MySQL 5.0 oder 5.1 geliefert. Jemand hat ein Plugin erstellt und es in MySQL 5.1.38 verfügbar gemacht. Die Standardeinstellungen waren 4. Ich stelle auch fest, dass Percona Server diese Dinge früh in MySQL 5.1 mit Standardeinstellungen von 8 implementiert hat. Die meisten Leute, die Percona Server sofort verwenden, schwören darauf und sagen oft, dass es besser als MySQL ist. Dieser Vergleich wird jedoch normalerweise mit dem Tweeking von InnoDB durchgeführt. Natürlich wäre Percona Server mit der doppelten Anzahl von Threads besser.
Angesichts dieser konservativen Methode, um eine bessere Leistung zu erzielen (Upgrade auf Percona), werden Sie nie wirklich wissen, wie gut, schlecht oder hässlich InnoDB sein wird, wenn Sie sich nicht darauf einstellen. Denken Sie an meinen Beitrag vom 24. November 2011 . Mehrere Versionen von MySQL wurden verglichen und in einigen Fällen übertraf InnoDB unter MySQL 4.1 5.x in einer Single-Threaded-Umgebung . Das ist bei gleichen Wettbewerbsbedingungen gegeben.
Um die Waage zu Ihren Gunsten zu kippen, müssen Sie InnoDB optimieren. Anstatt Ihnen einen einzigen endgültigen Pick-This-Pick-That-Leitfaden zu geben, müssen Sie sich über die Einstellungen informieren, die InnoDB vorgenommen hat, um mehrere Kerne zum Leben zu erwecken. Nicht jede Umgebung ist wie die Dual-Hexacore-Server meines Clients oder Ihr Dual-Hexadecacore.
Wenn ich Ihnen einen guten Ausgangspunkt geben müsste, wäre es das mysqlperformanceblog.com
. Alles, was mit Leistung auf MySQL zu tun hat, können Sie lesen, auswählen und bewerten.