Heim >Datenbank >MySQL-Tutorial >Zusammenfassung der Konfigurationstechniken für die MySQL-Datenbankoptimierungstechnologie_MySQL

Zusammenfassung der Konfigurationstechniken für die MySQL-Datenbankoptimierungstechnologie_MySQL

WBOY
WBOYOriginal
2016-08-20 08:48:081091Durchsuche

Die Beispiele in diesem Artikel beschreiben die Konfigurationsmethode der MySQL-Datenbankoptimierungstechnologie. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

(1) Reduzieren Sie den Datenbankzugriff

Für Seiten, die statisch gemacht werden können, machen Sie sie so statisch wie möglich

Statisieren Sie die Teile einer dynamischen Seite, die statisch sein können

Einige Daten können als XML generiert oder als Textdateien gespeichert werden

Verwenden Sie Daten-Caching-Technologie, wie zum Beispiel: MemCached

(2) Optimierte Erkennungsmethode

1. Benutzererfahrungserkennung

2.MySQL-Statuserkennung

Verwenden Sie den Befehl show status in der MySQL-Befehlszeile, um den aktuellen MySQL-Status abzurufen.

Konzentrieren Sie sich hauptsächlich auf die folgenden Attribute:

key_read_requests (Anzahl der Indexleseanforderungen) (beeinflusst von der Einstellung „key_buffer_size“)

key_reads (Anzahl der Index-Leseantworten)

Key_blocks_used

Qcache_*

Open_tables (beeinflusst durch table_cache-Einstellungen)

Geöffnete_Tabellen

table_locks

3. Erkennung von Tools von Drittanbietern

mysqlreport http://hackmysql.com/mysqlreport

mytop http://jeremy.zawodny.com/mysql/mytop/

System- und MySQL-Protokoll

Systembefehle: top, sar

MySQL-Protokoll: slow_query.log

(3) Hardware-Optimierung

In Bezug auf die Hardware ist die Festplatte der Teil, der am wahrscheinlichsten zum Flaschenhals von MySQL wird, gefolgt von CPU und Speicher

Festplattenaspekt

Die Verwendung einer schnelleren Festplatte wird für MySQL eine große Hilfe sein

Die Verwendung mehrerer Festplatten und der Einsatz von Raid kann die Geschwindigkeit einer einzelnen Festplatte erhöhen

Für die Raid-Methode wird empfohlen, Raid 0 1 oder Raid 1 0 zu verwenden

CPU

Es besteht kein Zweifel, dass CPUs mit höherer Frequenz und mehr CPUs MySQL mehr Leistung verleihen können

Hohe Leistung

Speicher

Ein höherer Speicher ermöglicht oft, dass mehr Daten in MySQL im Speicher zwischengespeichert werden,

Ein wichtiger Faktor ist jedoch die Notwendigkeit einer korrekten MySQL-Konfiguration

Netzwerkkarte

Gigabit-Netzwerkkarte und Gigabit-Netzwerk verwenden

(4) Optimierung des Betriebssystems

1. Benutzen Sie nicht den Swap-Bereich. Wenn Ihnen der Speicher ausgeht, fügen Sie mehr Speicher hinzu oder konfigurieren Sie Ihr System so, dass weniger Speicher verwendet wird

2. Verwenden Sie keine NFS-Festplatten

3. Erhöhen Sie die Anzahl der geöffneten Dateien im System und MySQL-Server

Verwenden Sie ulimit –n 65535

4. Erhöhen Sie die Anzahl der Prozesse und Threads im System.

5. Schließen Sie unnötige Anwendungen, optimieren Sie die Festplattenparameter und verwenden Sie hdparm zum Testen

(5) Optimierung auf Anwendungsebene

1. Verwenden Sie einen Multi-Server-Lastausgleich (mehrere Lese- und Schreibvorgänge, verwenden Sie Replikationstechnologie für die Datensynchronisierung)

2. Tabellenpartition (benutzerdefinierte Partition, MySQL5.1 beginnt mit der Unterstützung der integrierten Partitionsfunktion)

3. Verwenden Sie die Daten-Caching-Technologie memcached

(6) Optimierung der MySQL-Konfiguration

1.key_buffer(=512): Die vom Indexpuffer verwendete Speichermenge

Dies ist sehr wichtig für MyISAM-Tabellen. Es ist besser, es auf 25 %-30 % des verfügbaren Speichers festzulegen, indem Sie die Statuswerte Key_read_requests und Key_reads überprüfen

Sie können feststellen, ob die Einstellung „key_buffer“ angemessen ist. Das Verhältnis key_reads / key_read_requests sollte möglichst gering sein, mindestens 1:100, besser ist 1:1000, sonst bedeutet das, dass die key_buffer-Einstellung etwas zu klein ist

2.innodb_buffer_pool_size (= 512): Die vom Indexpuffer verwendete Speichermenge

3.table_cache (=1024): Größe des Datentabellen-Cache-Bereichs

Immer wenn MySQL auf eine Tabelle zugreift und Platz im Tabellenpuffer vorhanden ist, wird die Tabelle geöffnet und darin abgelegt, was einen schnelleren Zugriff auf den Tabelleninhalt ermöglicht.

Indem Sie die Statuswerte Open_tables und Opened_tables während der Spitzenlaufzeit überprüfen, können Sie entscheiden, ob der Wert von table_cache angepasst werden muss.

Wenn Sie feststellen, dass der Wert von open_tables gleich table_cache ist und Sie feststellen, dass der Statuswert open_tables wächst, müssen Sie den Parameterwert table_cache erhöhen

Sie können den Parameter table_cache nicht blind auf einen großen Wert setzen. Wenn er zu hoch eingestellt ist, kann dies zu unzureichenden Dateideskriptoren führen, was zu einer instabilen Leistung oder einem Verbindungsfehler führen kann.

4.sort_buffer_size (=256): Geben Sie die Länge des Puffers für die Sortierung an

Der diesem Parameter entsprechende zugewiesene Speicher gilt exklusiv für jede Verbindung! Bei 100 Verbindungen beträgt die tatsächliche Gesamtgröße des zugewiesenen Sortierpuffers 100 × 6 = 600 MB.

Für einen Server mit einem Speicher von etwa 4 GB wird daher empfohlen, ihn auf 6-8 MB einzustellen

5.join_buffer_size: Die Länge des Puffers für zugehörige Abfragen

Mehr als 4 GB Speicher, es wird empfohlen, größer als 32 MB zu sein. Der diesem Parameter entsprechende zugewiesene Speicher gilt auch exklusiv für jede Verbindung!

6.max_connections (=1024): Anzahl der Threads, die wiederverwendet werden können

Die Anzahl der Clients, die sich gleichzeitig mit dem MySQL-Server verbinden dürfen, kann durch Beobachten und Schätzen der maximalen Anzahl gleichzeitiger Verbindungen im System zu Spitzenzeiten eingestellt werden

7.thread_cache(=*): Anzahl der Threads, die wiederverwendet werden können

Im Allgemeinen auf die Anzahl der CPUs × 2 eingestellt

8.innodb_buffer_pool_size(= 512): Größe des Innodb-Tabellen-Cache-Pools

Dies ist sehr wichtig für Innodb-Tabellen. Innodb-Tabellen reagieren empfindlicher auf Pufferung als MyISAM-Tabellen. MyISAM kann unter der Standardeinstellung key_buffer_size

ausgeführt werden

Unter der Standardeinstellung innodb_buffer_pool_size verhält sich Innodb jedoch wie eine Schnecke.

Da Innodb sowohl Daten als auch Indizes zwischenspeichert, besteht keine Notwendigkeit, dem Betriebssystem zu viel Speicher zu überlassen. Wenn Sie also nur Innodb verwenden müssen, können Sie es auf 70–80 % des verfügbaren Speichers einstellen.

Einige Regeln, die für key_buffer gelten, sind: Wenn Ihr Datenvolumen nicht groß ist und nicht schnell wächst, besteht keine Notwendigkeit, innodb_buffer_pool_size zu groß einzustellen.

9.innodb_flush_logs_at_trx_commit(=1): Protokoll-Flush-Modus nach Transaktions-Commit

Befürchten Sie, dass Innodb 1000-mal langsamer ist als MyISAM? Es scheint, dass Sie vergessen haben, diesen Parameter zu ändern. Der Standardwert ist 1, was bedeutet, dass jede aktualisierte festgeschriebene Transaktion (oder jede Anweisung außerhalb einer Transaktion) auf die Festplatte geschrieben wird,

Und das ist ziemlich ressourcenintensiv, insbesondere ohne Batterie-Backup-Cache. Viele Anwendungen, insbesondere solche, die von MyISAM konvertiert wurden, setzen ihren Wert einfach auf 2, was bedeutet, dass die Protokolle nicht auf die Festplatte geschrieben werden,

Und nur in den Betriebssystem-Cache leeren. Das Protokoll wird weiterhin jede Sekunde auf die Festplatte geschrieben, sodass die Kosten für 1–2 Aktualisierungen pro Sekunde normalerweise nicht verloren gehen. Wenn es auf 0 gesetzt ist, ist es viel schneller, aber es ist auch relativ unsicher,

Einige Transaktionen gehen verloren, wenn der MySQL-Server abstürzt. Auf 2 setzen, damit der Teil der Transaktion, der in den Cache des Betriebssystems geleert wird, verloren geht.

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die speziellen Themen dieser Website ansehen: „Zusammenfassung der MySQL-Indexoperationsfähigkeiten“, „Umfassende Sammlung der MySQL-Protokolloperationsfähigkeiten“, „Zusammenfassung der MySQL-Transaktionsoperationsfähigkeiten“, „Umfassende Sammlung von MySQL-Kenntnissen für gespeicherte Prozeduren“, „Zusammenfassung der Techniken zum Sperren von MySQL-Datenbanken“ und „Zusammenfassung häufig verwendeter MySQL-Funktionen“

Ich hoffe, dass dieser Artikel für alle bei der MySQL-Datenbankplanung hilfreich sein wird.

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