my.cnf (my.ini) wichtige Parameteroptimierungs-Konfigurationsanweisungen

my.cnf (my.ini) wichtige Parameteroptimierungs-Konfigurationsanweisungen

MyISAM-Speicher-Engine

Die MyISAM-Speicher-Engine eignet sich für Systeme mit mehr Lese- als Schreibvorgängen und höheren Anforderungen an die Leseleistung.

Offizielle Dokumentation: http://dev.mysql.com/doc/refman/5.6/en/myisam-storage-engine.html

Key_buffer_size kann auf etwa 30 %–40 % des Speichers eingestellt werden. Durch Anzeigen von Variablen wie „%key_buffer_size%“;

Überprüfen Sie, ob noch etwas übrig ist, indem Sie den globalen Status wie „%key_blocks_unused%“ anzeigen. Wenn noch viel übrig ist, muss die key_buffer_size nicht erhöht werden. Wenn Sie MyISAM nicht verwenden, wird empfohlen, den Wert auf 16 m bis 32 m einzustellen.

Query_cache Wenn die Anwendung viele Lesevorgänge hat und auf Anwendungsebene kein Cache vorhanden ist, ist es sinnvoller, diesen Wert festzulegen. Stellen Sie ihn jedoch nicht zu groß ein, da sonst der Wartungsaufwand hoch ist und MySQL langsamer wird. 32 bis 512 m werden empfohlen

Sort_buffer_size wird bei komplexen Abfragen verwendet, empfohlen werden 8m bis 16m

Query_cache_size speichert ausgewählte Abfrageergebnisse im Cache. Bei einer großen Anzahl identischer Abfragen kann dieser Wert erhöht werden.

Bulk_insert_buffer_size wird für Batch-Einfügungen verwendet und muss kleiner als key_buffer_size sein.

Read_rnd_buffer_size wird verwendet, wenn SQL „order by“ hat und die zweite Abfrage ausgeführt wird. Es zeichnet die Sortierung auf und liest direkt aus dem Speicher.

Thread_cache_size gibt an, wie viele Threads zur Wiederverwendung im Cache gespeichert werden. Wenn der Wert innerhalb des eingestellten Wertes liegt, wird der Thread auch bei Trennung nicht zerstört und wartet auf eine neue Verbindung. Reduzieren Sie den Overhead bei der Thread-Erstellung.

Offizielles Referenzdokument zu Parametern: http://dev.mysql.com/doc/refman/5.6/en/optimizing-myisam.html

Innodb-Speicher-Engine

Innodb-Speicher-Engine1

Anzahl gleichzeitiger Threads: Innodb_thread_concurrency=0 [Standard] bedeutet nicht keine Gleichzeitigkeit, sondern unbegrenzte Gleichzeitigkeit ohne Gleichzeitigkeitsprüfung. InnoDB kontrolliert intern den Wert von 0 bis 1000

Anregung:

Anzahl der CPUs + Anzahl der Festplatten * 2. Wenn ein RAID-Master-Slave-System vorhanden ist, nicht mit 2 multiplizieren, da eine Sicherungsfestplatte vorhanden ist.

InnoDB-Speicher-Engine 2

Der Standardwert von Innodb_io_capacity beträgt 200. Ich denke, er stellt den Durchsatz der Festplatten-E/A dar, die Obergrenze der Anzahl von Datenseiten, die der Innodb-Hintergrundprozess pro Sekunde an E/A-Vorgängen verarbeiten kann.

Innodb_io_capacity_max ist standardmäßig auf 2000 eingestellt, IO-Limit festlegen

Quellcode: Suche nach srv_io_capacity in der InnoDB-Speicher-Engine-Schicht (hauptsächlich in der Datei srv0srv.c).

Wenn Sie eine SSD verwenden, können Sie den Wert weiter erhöhen, bis der Datenträger-E/A-Durchsatz erreicht ist.

InnoDB-Speicher-Engine 3

innodb_max_dirty_pages_pct Das Verhältnis der schmutzigen Seiten, die von InnoDB aus dem InnoDB-Puffer aktualisiert werden, 15 % - 80 %

Quellcode: Suche nach srv_max_buf_pool_modified_pct in der InnoDB-Speicher-Engine-Schicht (hauptsächlich in der Datei srv0srv.c).

Innodb-Speicher-Engine 4 [Wichtig]

innodb_flush_method ( O_DSYNC , O_DIRECT )

O_DSYNC: InnoDB verwendet den O_SYNC-Modus zum Öffnen und Aktualisieren von Protokolldateien und verwendet die Funktion fsync() zum Aktualisieren von Datendateien.

O_DIRECT: InnoDB verwendet den O_DIRECT-Modus zum Öffnen von Datendateien und verwendet die Funktion fsync() zum Aktualisieren von Protokollen und Datendateien.

Um zu verhindern, dass Daten auf RAID-Geräten von innodb_buffer und raid mehrfach zwischengespeichert werden, stellen Sie es auf den O_DIRECT-Modus ein. Mit anderen Worten: Öffnen Sie die Datendatei direkt, ohne die Protokolldatei zu öffnen.

Quellcode: Suche nach srv_unix_file_flush_method in der InnoDB-Speicher-Engine-Schicht (hauptsächlich in den Dateien log0log.c und os0file.c).

Innodb-Speicher-Engine 5 [Wichtig]

innodb_buffer_pool_size

Innodb folgt lru und lädt Daten basierend auf der Datensituation beim Eingeben der Daten in innodb_buffer_pool_size. Beim Bearbeiten von Daten müssen Sie nicht in der Datendatei suchen, sondern können diese direkt aus dem Speicher finden.

Im Allgemeinen wird es auf etwa 80 % des Speichers eingestellt, es muss jedoch die Gesamtmenge der Datendateien berücksichtigt werden. Pufferpoolgröße + durch Daten belegte Kapazität + vom Betriebssystem verwendeter Speicher = Speichergröße. Richten Sie so viele wie möglich ein.

Quellcode: Suchen Sie nach srv_buf_pool_size in der InnoDB-Speicher-Engine-Schicht (in den Dateien srv0srv.c und srv0start.c).

Innodb-Speicher-Engine6

innodb_buffer_pool_instances muss festgelegt werden, wenn mehrere Instanzen vorhanden sind.

Quellcode: Suche nach srv_buf_pool_instances in der InnoDB-Speicher-Engine-Schicht (hauptsächlich in der Datei buf0buf.c).

Innodb-Speicher-Engine7

innodb_log_file_size Protokolldateigröße

innodb_log_buffer_size Größe des Log-Cache

Schreiben Sie zuerst in innodb_log_buffer. Wenn der Puffer voll ist oder die Transaktion festgeschrieben ist, aktualisieren Sie die Daten. Wenn große Transaktionen häufig sind, erhöhen Sie die innodb_log_buffer_size. Der Standardwert ist 16 M.

Quellcode: Suche nach srv_log_buffer_size in der InnoDB-Speicher-Engine-Ebene (hauptsächlich in der Datei log0log.c).

Innodb-Speicher-Engine 8 [Wichtig]

Innodb_Datei_pro_Tabelle

Wenn Innodb_file_per_table auf 1 gesetzt ist, ist es aktiviert, d. h. alle Tabellen werden auf unabhängige Tabellenbereiche mit einer Datendatei für jede Tabelle festgelegt. Auch eingestellt

Innodb_open_files (Anzahl der gleichzeitig geöffneten Dateien). Da jede Tabelle einer Datendatei entspricht, müssen Sie die Anzahl der Dateien festlegen, die gleichzeitig geöffnet werden können, um sicherzustellen, dass mehrere Tabellen abgefragt werden können. Wenn Sie eine Tabelle auf eine andere Festplatte verschieben möchten, kann der gemeinsam genutzte Tabellenbereich außerdem nicht migriert werden, da alle Tabellen den gemeinsam genutzten Tabellenbereich verwenden.

Standardmäßig werden alle Tabellen im gemeinsam genutzten Bereich platziert. Das ist AUS

InnoDB-Speicher-Engine 9

Innodb_flush_log_at_trx_commit-Kernparameter:

0: Schreibt den Inhalt des Protokollpuffers in das Transaktionsprotokoll und schreibt ihn jede Sekunde auf die Festplatte.

1: Nach dem Festschreiben jeder Transaktion wird der Inhalt des Protokollpuffers in das Transaktionsprotokoll und auf die Datenfestplatte geschrieben

2: Jede Transaktion wird festgeschrieben, der Inhalt des Protokollpuffers wird in das Transaktionsprotokoll geschrieben, die Daten werden jedoch nicht auf die Festplatte geschrieben

Sync_binlog

Doppelter Konsistenzmodus: innodb_flush_log_at_trx_commit=1;sync_binlog=1; auf diese Weise sind die Master-Slave-Daten konsistent und es gehen keine Daten verloren.

Offizielle Parameterbeschreibungsadresse: http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html

Optimierung der Systemparameter

NUMA (Bei dualen Instanzen kann jede Instanz unter einem Knoten platziert werden, der nur von NUMA gesteuert wird)

Wenn NUMA auf der Betriebssystemebene deaktiviert ist, wirkt sich die Aktivierung von NUMA auf der BIOS-Ebene auf die Leistung aus und die QPS sinkt um etwa 15–30 %.

Wenn NUMA auf BIOS-Ebene deaktiviert wird, wird die Leistung nicht beeinträchtigt, unabhängig davon, ob NUMA auf Betriebssystemebene aktiviert wird.

Systemoptimierung jemalloc

Netzwerkkartenoptimierung: RPS+RFS

malloc

1) Laden Sie das Jemalloc-Quellpaket herunter
wget http://www.canonware.com/download/jemalloc/jemalloc-3.6.0.tar.bz2
tar -xjf jemalloc-3.6.0.tar.bz2

2) Kompilieren und installieren
cd jemalloc-3.6.0; ./konfigurieren; make und make install

3) MySQL konfigurieren

[mysqld_safe]
malloc-lib=$PATH/libjemalloc.so

4) Referenzdokument: http://blog.chinaunix.net/uid-29957450-id-4547818.html

my.cnf-Konfigurationsdateireferenz

# Die folgenden Optionen werden von der MySQL-Clientanwendung gelesen. 
# Beachten Sie, dass nur die mit MySQL gelieferte Clientanwendung diesen Abschnitt garantiert lesen kann. 
# Wenn Sie möchten, dass Ihre eigene MySQL-Anwendung diese Werte erhält. 
# Diese Optionen müssen angegeben werden, wenn die MySQL-Clientbibliothek initialisiert wird.
[Kunde]
Port = 3306
Socket = /usr/local/mysql/mysql.sock
# MySQL-Server [mysqld]
#Standard-Speicher-Engine INNODB
Standard-Speicher-Engine = INNODB
#GROUP_CONCAT Länge group_concat_max_len = 99999
#Portnummer Port = 3306
#Socket-Speicherort socket = /usr/local/mysql/mysql.sock 
#pid Schreibdateispeicherort pid-file = /usr/local/mysql/mysqld.pid
#Speicherort der Datenbankdatei datadir = /home/data/mysql/data
Benutzer = MySQL
#SQL-Modus, bitte beachten Sie die relevanten Informationen sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#Wenn eine externe Sperre aktiv ist, muss jeder Prozess auf die Datentabelle zugreifen.
#Sie müssen warten, bis der vorherige Vorgang den Vorgang abgeschlossen und die Sperre aufgehoben hat. Da der Server beim Zugriff auf die Datentabelle oft auf die Entsperrung warten muss,
#Daher verschlechtert eine externe Sperre die MySQL-Leistung in einer Einzelserverumgebung.
#Daher wird in den Quellen vieler Linux-Distributionen standardmäßig „skip-external-locking“ in der MySQL-Konfigurationsdatei verwendet, um externe Sperren zu vermeiden.
externe Verriegelung überspringen
#DNS-Rückwärtsauflösung überspringen skip-name-resolve
#Deaktivieren Sie den Standardwert des TIMESTAMP-Typs explicit_defaults_for_timestamp

#Wird nicht vom Client-Zeichensatz beeinflusst. Stellen Sie sicher, dass der Server-Zeichensatz den Skip-Character-Set-Client-Handshake durchführt.
#Erstverbindungszeichensatz UTF8
init-connect='Namen festlegen utf8'
#Standarddatenbank-Zeichensatz character-set-server=utf8

#Abfragecache 0, 1, 2, die jeweils Aus, Ein und Bedarf darstellen
query_cache_type = 1
#Einheit: Sekunden. Wenn die Handshake-Zeit connect_timeout überschreitet, wird die Verbindungsanforderung abgelehnt. connect_timeout = 20
#Legen Sie die Anzahl der Sekunden fest, nach deren Ablauf der Slave davon ausgeht, dass das Netzwerk abgelaufen ist. Der Slave-E/A-Thread wird dann erneut eine Verbindung zur Masterdatenbank herstellen, wenn keine Binärprotokollereignisse von der Masterdatenbank empfangen werden.
#Der Standardwert dieses Parameters beträgt 3600 s. Wenn die Zeit jedoch zu lang ist, führt dies zu Datenbankverzögerungen oder die direkte Verbindungsanomalie zwischen der Primär- und der Standby-Datenbank kann nicht rechtzeitig erkannt werden.
#Wenn das Slave_net_timeout sehr kurz eingestellt wird, kommt es zu häufigen Neuverbindungen, wenn der Master keine Datenaktualisierungen hat. Im Allgemeinen beträgt die Online-Einstellung 5s 
slave_net_timeout = 30

#Mit diesem Parameter wird konfiguriert, ob Updates vom Server in das Binärprotokoll geschrieben werden. Diese Option ist standardmäßig nicht aktiviert.
#Wenn dieser Slave-Server B jedoch der Slave-Server von Server A ist und auch als Master-Server von Server C dient, muss diese Option entwickelt werden.
#Damit sein Slave-Server C sein Binärprotokoll für den Synchronisierungsvorgang log-slave-updates=1 abrufen kann
#Bei Slave-Servern schreibt der IO-Thread Ereignisse mit der gleichen Server-ID wie er selbst in das Protokoll, was mit der Option „replicate-same-server-id=0“ für Log-Slave-Updates in Konflikt steht.
# Übrigens, generieren Sie eine eindeutige Server-ID. Ich habe darüber nachgedacht. Jeder hat eine eindeutige IP-Adresse, z. B. 10.112.87.91. Entfernen Sie einfach den Punkt und fügen Sie am Ende die Nummer 01 oder 02 oder 03 hinzu (die zweistellige Nummer wird hinzugefügt, wenn nur eine physische Maschine vorhanden ist und die Master-Slave-Replikation eine Server-ID zur Identifizierung benötigt. # Verwenden Sie 10112879101 als Server-ID.
server_id=10112879101
# Binäres Protokollieren aktivieren. 
# In einer Replikationskonfiguration muss diese Option für den MASTER-Server aktiviert sein. # Wenn Sie eine zeitpunktbezogene Wiederherstellung von Ihrem letzten Backup durchführen müssen, benötigen Sie auch das Binärprotokoll log-bin =/home/data/mysql/binlog/mysql-bin.log
#relay-log relay-log=mysql-relay-bin
#master-info-repository und relay-log-info-repository sind aktiviert, um eine absturzsichere Binärprotokollierung/Slave-Server-Funktionalität zu ermöglichen (Speichern von Informationen in Transaktionstabellen statt in Flatfiles).
master-info-repository=TABELLE
relay-log-info-repository=TABELLE

#Schreiben Sie nicht in die Datenbank im Binärprotokoll binlog-ignore-db=mysql # Keine Synchronisierungsdatenbanken
binlog-ignore-db=test # Keine Synchronisierungsdatenbanken
binlog-ignore-db=information_schema # Keine Synchronisierungsdatenbanken
binlog-ignore-db=performance_schema # Keine Synchronisierungsdatenbanken

#Schreiben in die Binärprotokolldatenbank binlog-do-db=business_db
binlog-do-db=Benutzerdatenbank
binlog-do-db=plocc_system

#15 Fortlaufendes Bereinigen des Binlogs
Ablauf der Protokolle in Tagen = 15
max_binlog_size = 1073741824 # Größe der Bin-Protokolle (1 G)

# Synchronisieren Sie Binlog nach jeweils 1000 Binlog-Schreibvorgängen mit der Festplatte sync_binlog = 1000

#Geben Sie an, welche Datenbankdaten kopiert werden replicate-do-db=business_db
replicate-do-db=Benutzerdatenbank
replizieren-do-db=plocc_system

#Öffnen Sie den Eventplaner Eventplaner
event_scheduler=1
#Die Anzahl der Verbindungen, die MySQL vorübergehend speichern kann. Dies kommt zum Tragen, wenn der Haupt-MySQL-Thread in kurzer Zeit eine sehr große Anzahl von Verbindungsanforderungen erhält.
#Wenn die Anzahl der MySQL-Verbindungen max_connections erreicht, werden neue Anfragen im Stapel gespeichert, um auf eine Verbindung zu warten, die Ressourcen freigibt.
#Die Nummer des Stapels ist back_log. Wenn die Anzahl der wartenden Verbindungen back_log überschreitet, werden keine Verbindungsressourcen gewährt back_log = 500

#Die maximale Anzahl von Verbindungen (Benutzern) für die gesamte Datenbank max_connections = 6000
#Die maximale Anzahl von Verbindungen für einen Benutzer max_user_connection=3000 
# Die maximal zulässige Anzahl von Fehlern pro Clientverbindung, wenn dieser Grenzwert erreicht wird. 
# Dieser Client wird vom MySQL-Server blockiert, bis „FLUSH HOSTS“ ausgeführt oder der Server neu gestartet wird. # Ungültige Passwörter und andere Fehler während der Verbindung erhöhen diesen Wert. 
# Überprüfen Sie den Status „Aborted_connects“, um den globalen Zähler max_connect_errors = 1844674407370954751 zu erhalten
#Größe des Tabellendeskriptor-Cache, die die Anzahl der Dateiöffnungs-/-schließvorgänge reduzieren kann table_open_cache = 2048

# Die maximale Größe eines Anforderungspakets, das der Dienst verarbeiten kann, und die maximale Größe einer Anforderung, die der Dienst verarbeiten kann (wichtig bei der Arbeit mit großen BLOB-Feldern) 
# Jede Verbindung hat ihre eigene, unabhängige Größe. Die Größe erhöht sich dynamisch max_allowed_packet = 64M
# Die Größe des Caches, den Binlog bereithält, um den SQL-Status einer Transaktion aufzuzeichnen. # Wenn Sie häufig große Transaktionen mit mehreren Anweisungen verwenden, können Sie diesen Wert erhöhen, um die Leistung zu steigern. 
# Alle Zustände von Transaktionen werden im Binärprotokollpuffer zwischengespeichert und nach dem Commit in das Binärprotokoll geschrieben. # Wenn die Transaktion größer als dieser Wert ist, wird stattdessen eine temporäre Datei auf der Festplatte verwendet. 
# Dieser Puffer wird erstellt, wenn die Transaktion jeder Verbindung ihren Status zum ersten Mal aktualisiert. binlog_cache_size = 1M
# Die maximal zulässige Größe für eine eigenständige Speichertabelle. 
# Diese Option soll verhindern, dass versehentlich eine übergroße Speichertabelle erstellt wird, die alle Speicherressourcen verbraucht.
maximale Heap-Tabellengröße = 1342177280
# Der Sortierpuffer wird für die Sortierung verwendet, die durch ORDER BY- und GROUP BY-Warteschlangen verursacht wird. # Wenn die sortierten Daten nicht in den Sortierpuffer gestellt werden können, 
# Es wird ein alternatives, festplattenbasiertes Mergesort verwendet. # Siehe die Statusvariable „Sort_merge_passes“. 
# sort_buffer_size = 8M, wird von jedem Thread beim Sortieren zugewiesen
# Dieser Puffer wird verwendet, um vollständige JOINs (Joins ohne Indizes) zu optimieren. 
# Ähnliche Joins haben in den meisten Fällen eine sehr schlechte Performance, 
# Wenn Sie diesen Wert jedoch höher einstellen, können Sie die Auswirkungen auf die Leistung verringern. 
# Überprüfen Sie die Anzahl der vollständigen Verknüpfungen über die Statusvariable „Select_full_join“. # Wenn eine vollständige Verknüpfung erfolgt, weisen Sie in jedem Thread join_buffer_size = 8 M zu.
# Wie viele Threads behalten wir im Cache zur Wiederverwendung? # Wenn ein Client die Verbindung trennt und weniger Threads als thread_cache_size im Cache sind, 
# Der Client-Thread wird in den Cache gestellt. 
# Dadurch kann der Aufwand für die Thread-Erstellung erheblich reduziert werden, wenn Sie viele neue Verbindungen benötigen. # (Wenn Sie über ein gutes Threading-Modell verfügen, stellt dies im Allgemeinen keine spürbare Leistungsverbesserung dar.)
Thread-Cache-Größe = 128
# Dadurch kann eine Anwendung dem Thread-System einen Hinweis geben, wie viele Threads sie gleichzeitig ausführen möchte. 
# Dieser Wert ist nur auf Systemen sinnvoll, die die Funktion thread_concurrency() unterstützen (wie z. B. Sun Solaris). 
# Sie können versuchen, [CPU-Nummer]*(2..4) als Thread_Concurrency-Wert zu verwenden thread_concurrency = 8
# Abfragepufferung wird häufig verwendet, um SELECT-Ergebnisse zwischenzuspeichern und Ergebnisse direkt zurückzugeben, ohne die gleiche Abfrage beim nächsten Mal auszuführen. 
# Das Aktivieren der Abfrage-Zwischenspeicherung kann die Servergeschwindigkeit erheblich erhöhen, wenn Sie viele identische Abfragen haben und Tabellen selten ändern. 
# Überprüfen Sie die Statusvariable „Qcache_lowmem_prunes“, um festzustellen, ob der aktuelle Wert für Ihre Last hoch genug ist. 
# Hinweis: Wenn sich Ihre Tabelle häufig ändert oder Ihr Abfragetext jedes Mal anders ist, 
# Das Zwischenspeichern von Abfragen kann eher zu einer Leistungsverschlechterung als zu einer Leistungsverbesserung führen.
Abfrage-Cachegröße = 64 M
# Nur Ergebnisse, die kleiner als diese Einstellung sind, werden zwischengespeichert. # Diese Einstellung dient zum Schutz des Abfrage-Cache und verhindert, dass ein sehr großer Ergebnissatz alle anderen Abfrageergebnisse überschreibt. query_cache_limit = 2M
# Die Mindestlänge eines Wortes, das von der Volltextsuche indiziert werden soll. 
# Wenn Sie nach kürzeren Wörtern suchen müssen, können Sie diesen Wert reduzieren. 
# Beachten Sie, dass nach der Änderung dieses Wertes 
# Sie müssen Ihren FULLTEXT-Index neu erstellen ft_min_word_len = 4
# Die vom Thread verwendete Heap-Größe. Diese Speichermenge ist für jede Verbindung reserviert. 
# MySQL selbst benötigt normalerweise nicht mehr als 64 KB Speicher. # Wenn Sie eigene UDFs verwenden, die große Mengen an Heap benötigen, # oder Ihr Betriebssystem für bestimmte Operationen mehr Heap benötigt, 
# Möglicherweise möchten Sie diesen Wert höher einstellen. 
Thread-Stapel = 192 KB
# Legen Sie die Standardisolationsebene für Transaktionen fest. Die verfügbaren Ebenen sind wie folgt: 
# LESEN-UNCOMMITTED, LESEN-COMMITTED, WIEDERHOLBARES LESEN, SERIALISIERBAR
transaction_isolation = LESEN-COMMITTED
# Maximale Größe interner (im Arbeitsspeicher befindlicher) temporärer Tabellen # Wenn eine Tabelle diesen Wert überschreitet, wird sie automatisch in eine festplattenbasierte Tabelle konvertiert. 
# Dieses Limit gilt für einzelne Tabellen, nicht für die Gesamtzahl.
tmp_table_size = 1342177280

#binlog Protokolltyp -- gemischt binlog_format=gemischt
#Öffnen Sie das langsame Abfrageprotokoll slow_query_log
#Dateiformat log_output = DATEI
# Alle Abfragen, die länger als diese Zeit (in Sekunden) dauern, werden als langsame Abfragen betrachtet. 
# Verwenden Sie hier nicht „0“, da sonst alle Abfragen, auch sehr schnelle, aufgezeichnet werden (da MySQL derzeit nur eine Zeitgenauigkeit von Sekunden hat). 
lange_Abfragezeit = 0,5
#Speicherort des langsamen Abfrageprotokolls slow_query_log_file=/usr/local/mysql/mysqld_slow.log
#Geben Sie die Größe des Indexpuffers an, die die Geschwindigkeit der Indexverarbeitung bestimmt, insbesondere die Geschwindigkeit des Indexlesens. #******************** MyISAM-bezogene Optionen********************************
# Die Größe des Schlüsselwortpuffers, der im Allgemeinen zum Puffern der Indexblöcke von MyISAM-Tabellen verwendet wird. 
# Stellen Sie den Wert nicht höher als 30% des verfügbaren Speichers ein. 
# Weil ein Teil des Speichers auch vom Betriebssystem zum Zwischenspeichern von Zeilendaten verwendet wird. # Auch wenn Sie keine MyISAM-Tabellen verwenden, müssen Sie dennoch 8-64 MB Speicher einrichten, da dieser auch von internen temporären Festplattentabellen verwendet wird.
Schlüsselpuffergröße = 32 M
# Puffergröße, die für vollständige Tabellenscans von MyISAM-Tabellen verwendet wird. 
# Wenn ein vollständiger Tabellenscan erforderlich ist, wird er im entsprechenden Thread zugewiesen.
Lesepuffergröße = 2 M
# Wenn nach dem Sortieren Zeilen aus einer bereits sortierten Sequenz gelesen werden, werden die Zeilendaten aus diesem Puffer gelesen, um Suchvorgänge auf der Festplatte zu vermeiden. 
# Wenn Sie diesen Wert erhöhen, können Sie die Leistung von ORDER BY erheblich verbessern. 
# Bei Bedarf jedem Thread read_rnd_buffer_size = 8M zuweisen
# MyISAM verwendet einen speziellen baumartigen Cache, um Burst-Einfügungen durchzuführen (diese Einfügungen sind INSERT ... SELECT, INSERT ... VALUES (...), (...), ... und LOAD DATA 
# INFILE) schneller. Diese Variable begrenzt die Anzahl der Bytes des Cache-Baums pro Prozess. 
# Wenn Sie dies auf 0 setzen, wird diese Optimierung deaktiviert. 
# Stellen Sie diesen Wert aus Optimierungsgründen nicht größer als „key_buffer_size“ ein. 
# Dieser Puffer wird zugewiesen, wenn eine Burst-Einfügung erkannt wird.
bulk_insert_buffer_size = 16M
# Dieser Puffer wird zugewiesen, wenn MySQL während REPAIR, OPTIMIZE, ALTER und LOAD DATA INFILE Indizes für eine leere Tabelle neu erstellen muss. 
# Dies wird pro Thread zugewiesen. Seien Sie also vorsichtig, wenn Sie große Werte festlegen.
myisam_sort_buffer_size = 128 M
# Die maximale Größe der temporären Datei, die MySQL beim Neuerstellen eines Indexes zulässt (bei REPAIR, ALTER TABLE oder LOAD DATA INFILE). 
# Wenn die Dateigröße größer als dieser Wert ist, wird der Index über den Schlüsselwertpuffer erstellt (langsamer) 
myisam_max_sort_file_size = 1 GB
# Wenn eine Tabelle mehr als einen Index hat, kann MyISAM diese reparieren, indem es parallel mit mehr als einem Thread sortiert. 
# Dies ist eine gute Wahl für Benutzer mit mehreren CPUs und viel Speicher.
myisam_repair_threads = 1
# MyISAM-Tabellen automatisch prüfen und reparieren, die nicht ordnungsgemäß geschlossen wurden. 
myisam_recover

# *************** INNODB-bezogene Optionen************************ 
# Wenn Ihr MySQL-Server InnoDB-Unterstützung bietet, Sie diese aber nicht nutzen möchten, 
# Durch die Verwendung dieser Option wird Speicher und Speicherplatz gespart und einige Teile werden beschleunigt. #skip-innodb

# #####[Wichtige Elemente]
# InnoDB verwendet im Gegensatz zu MyISAM einen Pufferpool zum Speichern von Indizes und Rohdaten. 
# Je größer Sie ihn einstellen, desto weniger Festplatten-E/A benötigen Sie, um auf die Daten in der Tabelle zuzugreifen. 
# Auf einem eigenständigen Datenbankserver können Sie diese Variable auf 80 % der physischen Speichergröße des Servers einstellen. 
# Stellen Sie den Wert nicht zu groß ein, da sonst der Wettbewerb um den physischen Speicher zu Paging-Jitter im Betriebssystem führen kann. 
# Beachten Sie, dass Sie auf 32-Bit-Systemen möglicherweise auf 2-3,5 GB Benutzerspeicher pro Prozess beschränkt sind. 
# Stellen Sie den Wert also nicht zu hoch ein.
innodb_buffer_pool_size = 700m #1G
# InnoDB speichert Daten in einer oder mehreren Datendateien als Tablespaces. 
# Wenn Sie nur ein einziges logisches Laufwerk zum Speichern Ihrer Daten haben, ist eine einzige automatisch inkrementierende Datei ausreichend. 
# In anderen Fällen ist eine Datei pro Gerät normalerweise eine gute Wahl. 
# Sie können InnoDB auch so konfigurieren, dass es Rohpartitionen verwendet – weitere Informationen finden Sie im Handbuch innodb_data_file_path = IBdata1:1024M;IBdata2:1024M:autoextend
# Setzen Sie diese Option, wenn InnoDB-Tablespace-Dateien auf einer anderen Partition gespeichert werden sollen. 
# Standardmäßig im MySQL-Datenverzeichnis gespeichert. 
#innodb_data_home_dir = 
# Die Anzahl der IO-Threads, die zum Synchronisieren von IO-Operationen verwendet werden. Dieser Wert ist 
# Dieser Wert ist unter Unix fest auf 4 codiert, unter Windows kann die Festplatten-E/A jedoch mit einem größeren Wert besser funktionieren. 
innodb_file_io_threads = 4
# Anzahl der im InnoDb-Kern zulässigen Threads. 
# Der optimale Wert hängt von der Anwendung, der Hardware und der Planung des Betriebssystems ab. 
# Ein zu hoher Wert kann zu Thread-Mutex-Thrashing führen.
innodb_thread_concurrency = 16
# #####[Wichtige Elemente]
# Wenn auf 1 gesetzt, schreibt (fsync) InnoDB das Transaktionsprotokoll nach jedem Commit auf die Festplatte. 
# Dies bietet vollständiges ACID-Verhalten. 
# Wenn Sie bereit sind, Kompromisse bei der Transaktionssicherheit einzugehen und kleine Transaktionen ausführen, können Sie diesen Wert auf 0 oder 2 setzen, um den durch das Transaktionsprotokoll verursachten Festplatten-E/A zu reduzieren. 
# 0 bedeutet, dass das Protokoll nur ungefähr jede Sekunde in die Protokolldatei geschrieben und die Protokolldatei auf die Festplatte geleert wird. 
# 2 bedeutet, dass das Protokoll nach jedem Commit in die Protokolldatei geschrieben wird, die Protokolldatei jedoch nur ungefähr jede Sekunde auf die Festplatte geschrieben wird. 
# --------------------
# (Hinweis: Wenn es sich um einen Spieleserver handelt, wird empfohlen, diesen Wert auf 2 zu setzen; wenn es sich um eine Anwendung mit extrem hohen Datensicherheitsanforderungen handelt, wird empfohlen, ihn auf 1 zu setzen;
# Wenn Sie den Wert auf 0 setzen, erzielen Sie die beste Leistung, bei einem Fehler können jedoch Daten verloren gehen!
# Der Standardwert 1 bedeutet, dass bei jedem Transaktions-Commit oder jeder Anweisung außerhalb einer Transaktion das Protokoll auf die Festplatte geschrieben werden muss, was sehr zeitaufwändig ist.
# Insbesondere bei Verwendung eines batteriegestützten Cache. Für viele Anwendungen ist es kein Problem, den Wert auf 2 zu setzen, insbesondere bei der Übertragung von MyISAM-Tabellen.
# Es bedeutet, nicht auf die Festplatte zu schreiben, sondern in den Systemcache. Das Protokoll wird weiterhin jede Sekunde auf die Festplatte geschrieben, sodass im Allgemeinen nicht mehr als 1–2 Sekunden an Aktualisierungen verloren gehen.
# Das Setzen auf 0 ist schneller, aber weniger sicher. Selbst wenn MySQL abstürzt, können Transaktionsdaten verloren gehen. Bei einem Wert von 2 kann es nur dann zu Datenverlust kommen, wenn das gesamte Betriebssystem abstürzt.)
innodb_flush_log_at_trx_commit = 2

# Die Größe des Puffers, der zum Puffern von Protokolldaten verwendet wird. 
# Wenn dieser Wert fast voll ist, muss InnoDB die Daten auf die Festplatte schreiben. 
# Da es fast jede Sekunde aktualisiert wird, besteht keine Notwendigkeit, diesen Wert zu groß einzustellen (auch bei langen Transaktionen). 
innodb_log_buffer_size = 16 M

# Die Größe jeder Protokolldatei in der Protokollgruppe. 
# Sie sollten die kombinierte Protokolldateigröße auf 25 % bis 100 % Ihrer Pufferpoolgröße einstellen 
# um unnötige Pufferpool-Leervorgänge beim Überschreiben von Protokolldateien zu vermeiden. 
# Beachten Sie jedoch, dass eine große Protokolldatei die für den Wiederherstellungsprozess erforderliche Zeit verlängert innodb_log_file_size = 1024M

# Gesamtzahl der Dateien in der Protokollgruppe. 
# Im Allgemeinen sind 2–3 besser. 
innodb_log_files_in_group = 3

# Der Speicherort der InnoDB-Protokolldateien. Der Standardwert ist MySQL datadir. 
# Sie können es einer separaten Festplatte oder einem RAID1-Volume zuweisen, um die Leistung zu verbessern. #innodb_log_group_home_dir

# Maximal zulässiges Verhältnis von schmutzigen Seiten im InnoDB-Pufferpool. 
# Wenn das Limit erreicht ist, beginnt InnoDB mit dem Leeren, um zu verhindern, dass sie saubere Datenseiten beeinträchtigen. 
# Dies ist eine weiche Grenze und es gibt keine Garantie, dass sie durchgesetzt wird. 
innodb_max_dirty_pages_pct = 90

# Die Methode, die InnoDB zum Leeren von Protokollen verwendet. 
# Der Tablespace verwendet immer die Dual-Write-Flush-Methode. # Der Standardwert ist „fdatasync“, der andere ist „O_DSYNC“. 
innodb_flush_method=O_DSYNC

# Wie lange eine InnoDB-Transaktion auf die Gewährung einer Sperre warten soll, bevor ein Rollback durchgeführt wird. 
# InnoDB erkennt Transaktions-Deadlocks automatisch in seiner eigenen Sperrtabelle und führt ein Rollback der Transaktion durch. 
# Wenn Sie die Direktive LOCK TABLES verwenden oder in derselben Transaktion eine andere transaktionssichere Speicher-Engine als InnoDB verwenden, # kann ein Deadlock auftreten, ohne dass InnoDB dies bemerkt. 
# In diesem Fall ist dieser Timeout-Wert bei der Lösung dieses Problems sehr hilfreich. 
innodb_lock_wait_timeout = 30

[mysqldump]
# Zwischenspeichern Sie nicht das gesamte Ergebnis im Speicher, bevor Sie es auf die Festplatte schreiben. Dies ist beim Exportieren sehr großer Tabellen erforderlich.

max_allowed_packet = 64M

[mysql]
kein automatisches Wiederaufwärmen

[myisamchk]
Schlüsselpuffergröße = 512 M
Sortierpuffergröße = 512 M
Lesepuffer = 8 M
Schreibpuffer = 8M

[mysqlhotcopy]
Interaktives Timeout

[mysqld_safe]
# Erhöhen Sie die Anzahl der geöffneten Dateien pro Prozess. 
# WARNUNG: STELLEN SIE SICHER, DASS SIE IHRE SYSTEMWEITEN GRENZEN HOCH GENUG EINGESTELLT HABEN! 
# Um eine große Anzahl von Tabellen zu öffnen, müssen Sie diesen Wert auf einen größeren Wert setzen open-files-limit = 8192
log-error=/usr/local/mysql/mysqld.log
pid-Datei=/usr/local/mysql/mysqld.pid

Bei der Leistungsoptimierung von MySQL geht es nicht nur um diese Inhalte, es gibt noch viel mehr. Sie können auf unserer Website nach weiteren Lösungen zur Leistungsoptimierung von MySQL suchen.

Das könnte Sie auch interessieren:
  • Umfassende Referenz zur MySQL-Leistungsoptimierungsmethode, von der CPU über die Dateisystemauswahl bis hin zur mysql.cnf-Parameteroptimierung
  • Die besten 20+ Tipps zur MySQL-Leistungsoptimierung
  • Einführung in die Verwendung des MySQL-Leistungsoptimierungstools - Tuner-Primer
  • Detaillierte Erläuterung der Leistungsoptimierung der MySQL-Datenbank
  • MySQL-Leistungsparameter – detaillierte Erklärung der Skip-External-Locking-Parameter
  • MySQL-Leistungsparameter: Detaillierte Erklärung der Max_connect_errors-Verwendung
  • Fehlerbehebung bei MySQL-Leistungsengpässen und Standortbeispiel
  • Gemeinsame Nutzung von Lösungen zur MySQL-Leistungsoptimierung
  • Fallstudie zur Leistungsoptimierung bei MySQL – einschließlich Indexfreigabe
  • Fallstudie zur Leistungsoptimierung von MySQL – einschließlich Index und SQL_NO_CACHE
  • MySQL Leistungsoptimierung Indexoptimierung
  • Tutorial zur Installation und Konfiguration der MySQL-Leistungsüberwachungssoftware Nagios
  • Analyse der 19 MySQL-Leistungsoptimierungspunkte
  • Detaillierte Erläuterung der MySQL-Leistungsoptimierung (Teil 2)
  • Detaillierte Erläuterung der MySQL-Leistungsoptimierung (Teil 1)
  • 10 Möglichkeiten zur Optimierung der MySQL-Leistung
  • Eine kurze Diskussion über die Auswirkungen des InnoDB-Isolationsmodus auf die MySQL-Leistung
  • So verwenden Sie FriendFeed, um die MySQL-Leistung zu verbessern

<<:  So starten und starten Sie nginx unter Linux neu

>>:  Beispiel für den Aufbau eines Redis-Sentinel-Clusters basierend auf Docker

Artikel empfehlen

Vollständige Analyse der MySQL-Datentypen

Datentyp: Die grundlegenden Regeln, die definiere...

MySQL-Datenbankterminal – allgemeine Befehlscodes für Vorgänge

Inhaltsverzeichnis 1. Benutzer hinzufügen 2. Ände...

Problem mit der Parameterübergabe beim Sprung auf HTML-Seite

Die Wirkung ist wie folgt: eine Seite Nach dem Kl...

Fortgeschrittene JavaScript-Programmierung: Variablen und Umfang

Inhaltsverzeichnis 1. Ursprungswert und Bezugswer...

Kontext und Eigenschaften von React erklärt

Inhaltsverzeichnis 1. Kontext 1. Anwendungsszenar...

Wissen Sie, wie Sie mit Vue-Cropper Bilder in Vue zuschneiden?

Inhaltsverzeichnis 1. Installation: 2. Verwendung...

Detaillierte Erklärung zur Verwendung der JavaScript-Paging-Komponente

Die Paginierungskomponente ist eine häufige Kompo...

JS implementiert einen Stoppuhr-Timer

In diesem Artikelbeispiel wird der spezifische JS...

Detaillierte Erklärung zur Verwendung des Canvas-Operation-Plugins fabric.js

Fabric.js ist ein sehr nützliches Plug-In für Can...

Detaillierte Analyse des MySQL 8.0-Redo-Logs

Inhaltsverzeichnis Vorwort Generierung eines Redo...