Frage Wie kann die Speicherauslastung in MySQL Server erhöht werden, um die Geschwindigkeit zu erhöhen?


Ich habe einen Windows 2008 Server mit 8 GB RAM, auf dem IIS7 und MySQL laufen. Ich habe die Speicher-, CPU- und Festplattennutzung auf dem Server verfolgt und festgestellt, dass MySQL nur 250 MB RAM verwendet, wodurch die Festplatten sehr ausgelastet sind, obwohl ich reichlich freie RAMs herumliegen habe.

In SQL Server kann ich die Menge des Arbeitsspeichers, die ich verwenden möchte, einfach festlegen, ich suche nach der gleichen Einstellung in MySQL.

Wie kann ich MySQL so konfigurieren, dass mehr Arbeitsspeicher verwendet und die CPU- und Festplattennutzung reduziert wird?


25
2017-07-20 01:46


Ursprung




Antworten:


table_cache ist die nützlichste zu ändernde Konfigurationsanweisung. Jedes Mal, wenn MySQL auf eine Tabelle zugreift, lädt es die Tabelle in den Cache. Wenn Sie eine hohe Anzahl an Tabellen haben, ist es schneller, sie zwischenzuspeichern.

Sehen Sie sich Ihre Servervariablen an, indem Sie Folgendes ausführen:

show status;

und suche nach der Variablen open_tables. Wenn das das gleiche wie dein ist table_cache Wert und opened_tables geht weiter, dann müssen Sie erhöhen table_cache Wert in Ihrer Konfigurationsdatei. Sie werden eine Balance finden, indem Sie mit diesen Variablen während der Spitzenzeiten experimentieren. Sie möchten es so konfigurieren, dass es zu Spitzenzeiten nur wenig gibt opened_tables auch nachdem der Server lange Zeit aufgehört hat.

key_buffer_size ist auch eine gute Variable zum Experimentieren. Diese Variable wirkt sich auf die Größe des Indexpuffers aus. Wenn Sie diese Variable vergrößern, erhöht sich die Indexhandlungsgeschwindigkeit von MySQL. Sie können die Variablen mit den show variables; befehle erneut und vergleiche key_read_requests zu key_reads. Im Idealfall möchten Sie, dass das Verhältnis zwischen diesen beiden Variablen so niedrig wie möglich ist, und Sie können dies tun, indem Sie die Größe der beiden Variablen erhöhen key_buffer_size. Wenn Sie diese Variable höher setzen, haben Sie weniger Schreib- und Lesevorgänge direkt auf und von der Festplatte, was Ihr Hauptanliegen war.


19
2017-07-20 02:12



Eigentlich ist das Kommando show status;  um Statusvariablen zu sehen sowie Open_tables und Opened_tables. table_cache scheint in den letzten MySQL-Versionen entfernt worden zu sein. - Matt Fenwick


Sie müssen die Werte in den ändern my.cnf file und starte MySQL neu, obwohl du viele davon ändern kannst, während MySQL läuft ('SET GLOBAL VARIABLE =Wert').

Sie werden wahrscheinlich auf steigende sehen wollen key_buffer_size, sort_buffer, read_buffer und table_cache für Anfänger und wahrscheinlich innodb_buffer_pool_size , wenn Sie InnoDB-Tabellen haben. Einige dieser Werte können Sie sehr weit erhöhen (sogar zwei Größenordnungen), besonders in Anbetracht Ihrer Hardware. Die Standardwerte von MySQL sind äußerst konservativ und scheinen auf gängige Desktops mit gemischter Nutzung vor etwa zehn Jahren ausgerichtet zu sein. Oh, und sei gewarnt, dass die 32-Bit-Version Probleme mit mehr als 2 GB RAM haben wird.

Hinein sehen das MySQL-Handbuch für mehr Informationen und Anleitung.


3
2017-07-20 01:58