Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Eine ausführliche Einführung zur Optimierung von MySQL unter Linux

Eine ausführliche Einführung zur Optimierung von MySQL unter Linux

黄舟
黄舟Original
2017-06-04 11:26:421666Durchsuche

In diesem Artikel werden hauptsächlich relevante Informationen zu MySQL-Optimierungsbeispielen in Linux vorgestellt. Freunde in Not können sich auf

Linux-Paar beziehen. Detaillierte Erklärung von MySQL Optimierungsbeispiele

vim /etc/my.cnf Im Folgenden wird nur der Inhalt des Absatzes [mysqld] in der Datei my.cnf aufgeführt. Der Inhalt anderer Absätze hat kaum Auswirkungen auf die Laufleistung von MySQL, also vorerst vernachlässigen.

[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking

Vermeiden Sie die externe Sperrung von MySQL, reduzieren Sie das Fehlerrisiko und verbessern Sie die Stabilität.

skip-name-resolve

Verbieten Sie MySQL die DNS-Auflösung für externe Verbindungen. Durch die Verwendung dieser Option kann MySQL Zeit für die DNS-Auflösung sparen. Es ist jedoch zu beachten, dass bei aktivierter Option alle Remote-Host-Verbindungsberechtigungen IP-Adressen verwenden müssen, da MySQL sonst Verbindungsanfragen nicht normal verarbeiten kann!

back_log = 384

Der Wert des back_log-Parameters gibt an, wie viele Anfragen in kurzer Zeit im Stack gespeichert werden können, bevor MySQL vorübergehend nicht mehr auf neue Anfragen reagiert. Wenn das System in kurzer Zeit viele Verbindungen hat, müssen Sie den Wert dieses Parameters erhöhen, der die Größe der Überwachungs-Warteschlange für eingehende TCP/IP-Verbindungen angibt. Verschiedene Betriebssysteme haben ihre eigenen Grenzen für diese Warteschlangengröße. Der Versuch, back_log auf einen höheren Wert als den Grenzwert Ihres Betriebssystems festzulegen, hat keine Auswirkung. Der Standardwert ist 50. Für Linux-Systeme wird empfohlen, den Wert auf eine Ganzzahl kleiner als 512 festzulegen.

key_buffer_size = 256M

key_buffer_size gibt die Puffergröße an, die für index verwendet wird. Erhöhen Sie sie für eine bessere Indexverarbeitungsleistung. Für Server mit einem Arbeitsspeicher von etwa 4 GB kann dieser Parameter auf 256 MB oder 384 MB eingestellt werden. Hinweis: Wenn Sie diesen Parameterwert zu groß einstellen, verringert sich die Gesamteffizienz des Servers!

max_allowed_packet = 4M
thread_stack = 256K
table_cache = 128K
sort_buffer_size = 6M

Fragen Sie die Puffergröße ab, die beim Sortieren verwendet werden kann. Hinweis: Der diesem Parameter zugeordnete Speicher gilt exklusiv für jede Verbindung. Bei 100 Verbindungen beträgt die gesamte zugewiesene Sortierpuffergröße 100 × 6 = 600 MB. Daher wird empfohlen, ihn für einen Server mit einem Speicher von etwa 4 GB auf 6-8 MB einzustellen.

read_buffer_size = 4M

Die Puffergröße, die von Leseabfragevorgängen verwendet werden kann. Wie sort_buffer_size gilt auch der diesem Parameter zugeordnete Speicher exklusiv für jede Verbindung.

join_buffer_size = 8M

Die Puffergröße, die von der gemeinsamen Abfrage verwendet werden kann Wie bei sort_buffer_size gilt auch der diesem Parameter zugeordnete Speicher exklusiv für jede Verbindung.

myisam_sort_buffer_size = 64M
table_cache = 512
thread_cache_size = 64
query_cache_size = 64M

Gibt die Größe des MySQL-Abfragepuffers an. Dies kann in der MySQL-Konsole beobachtet werden. Wenn der Wert von Qcache_lowmem_prunes sehr groß ist, weist dies darauf hin, dass die Pufferung häufig nicht ausreicht Wenn der Wert klein ist, wirkt sich dies auf die Effizienz aus. Dann können Sie erwägen, den Cache nicht abzufragen. Wenn der Wert sehr groß ist, bedeutet dies, dass sich viele Fragmente im Puffer befinden.

tmp_table_size = 256M
max_connections = 768

Geben Sie die maximale Anzahl von Verbindungsvorgängen an, die MySQL zulässt. Wenn beim Zugriff auf das Forum häufig die Fehlermeldung „Too ManyConnections“ erscheint, müssen Sie den Wert dieses Parameters erhöhen.

max_connect_errors = 10000000
wait_timeout = 10

Geben Sie die maximale Verbindungszeit für eine Anfrage an. Für Server mit etwa 4 GB Speicher kann sie auf 5-10 eingestellt werden.

thread_concurrency = 8

Der Wert dieses Parameters ist die Anzahl der logischen Server-CPUs * 2. In diesem Beispiel verfügt der Server über 2 physische CPUs und jede physische CPU unterstützt H.T-Hyper-Threading. Der tatsächliche Wert lautet also 4 *2=8

skip-networking

Aktivieren Sie diese Option, um die TCP/IP-Verbindungsmethode von MySQL vollständig zu schließen. Wenn der WEB-Server über eine Remote-Verbindung auf den MySQL-Datenbank-Server zugreift, tun Sie dies Aktivieren Sie diese Option nicht! Andernfalls ist die normale Verbindung nicht möglich!

table_cache=1024

Je größer der physische Speicher, desto größer die Einstellung. Der Standardwert ist 2402, passen Sie ihn für eine optimale Einstellung auf 512-1024 an

innodb_additional_mem_pool_size=4M

Der Standardwert ist 2M

innodb_flush_log_at_trx_commit=1

Wenn Sie den Wert auf 0 setzen, müssen Sie warten, bis die innodb_log_buffer_size-Warteschlange voll ist, bevor Sie sie gleichmäßig speichern. Der Standardwert ist 1.

innodb_log_buffer_size=2M

Setzen Sie ihn auf Wie viele CPUs hat Ihr Server? Es wird empfohlen, den Standardwert 8 zu verwenden

innodb_thread_concurrency=8

Es ist erwähnenswert:
key_buffer_size=256M
#默认为218,调到128最佳
tmp_table_size=64M         
#默认为16M,调到64-256最挂
read_buffer_size=4M        
#默认为64K
read_rnd_buffer_size=16M    
#默认为256K
sort_buffer_size=32M       
#默认为256K
thread_cache_size=120     
#默认为60
query_cache_size=32M

Viele Situationen erfordern spezifische Angaben Analyse

1. Wenn Key_reads zu groß ist, sollten Sie die Key_buffer_size in my.cnf erhöhen und Key_reads/Key_read_requests auf mindestens 1/100 halten.

2. Wenn Qcache_lowmem_prunes sehr groß ist, erhöhen Sie den Wert von Query_cache_size.

Das obige ist der detaillierte Inhalt vonEine ausführliche Einführung zur Optimierung von MySQL unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn