MySQL
Konfiguration und Abstimmung
Suche…
Bemerkungen
Die Konfiguration erfolgt auf drei verschiedene Arten:
- Befehlszeilenoptionen
- die
my.cnf
Konfigurationsdatei - Setzen von Variablen vom Server aus
Befehlszeilenoptionen haben die Form mysqld --long-parameter-name=value --another-parameter
. Die gleichen Parameter können in der Konfigurationsdatei my.conf
abgelegt werden. Einige Parameter können mithilfe von Systemvariablen in MySQL konfiguriert werden. In der offiziellen Dokumentation finden Sie eine vollständige Liste der Parameter.
Variablen können Strich haben -
oder unterstreichen _
. Um das =
können Leerzeichen stehen. Große Zahlen können durch K
, M
, G
für Kilo-, Mega- und Giga- ergänzt werden. Eine Einstellung pro Zeile.
Flags: Normalerweise sind ON
und 1
gleichbedeutend, ebenso für OFF
und 0
. Einige Flaggen haben nichts hinter sich.
Wenn Sie die Einstellungen in my.cnf
, müssen sich alle Einstellungen für den Server im Abschnitt [mysqld]
also nicht blind Einstellungen am Ende der Datei hinzu. (Hinweis: Bei Tools, die mehreren MySQL-Instanzen erlauben, eine my.cnf gemeinsam zu nutzen, können die Abschnittsnamen unterschiedlich sein.)
InnoDB-Leistung
Es gibt Hunderte von Einstellungen, die in my.cnf platziert werden können. Für den 'Lite'-Benutzer von MySQL sind sie nicht so wichtig.
Sobald Ihre Datenbank einmalig ist, sollten Sie die folgenden Parameter einstellen:
innodb_buffer_pool_size
Dies sollte auf etwa 70% des verfügbaren Arbeitsspeichers festgelegt werden (wenn Sie über mindestens 4 GB RAM verfügen; ein kleinerer Prozentsatz, wenn Sie eine kleine VM oder einen antiken Computer haben). Die Einstellung steuert den von InnoDB ENGINE verwendeten Cache-Speicher. Daher ist es für die Leistung von InnoDB sehr wichtig.
Parameter zum Einfügen großer Daten
Wenn Sie Bilder oder Videos in der Spalte speichern müssen, müssen wir den Wert entsprechend Ihrer Anwendung ändern
max_allowed_packet = 10M
M ist Mb, G in Gb, K in Kb
Erhöhen Sie das Zeichenfolgenlimit für group_concat
group_concat
wird verwendet, um Nicht-Null-Werte in einer group
zu verketten. Die maximale Länge der resultierenden Zeichenfolge kann mit der Option group_concat_max_len
:
SET [GLOBAL | SESSION] group_concat_max_len = val;
Durch das Festlegen der GLOBAL
Variablen wird eine dauerhafte Änderung sichergestellt, während durch das Festlegen der SESSION
Variable der Wert für die aktuelle Sitzung festgelegt wird.
Minimale InnoDB-Konfiguration
Dies ist ein absolutes Minimum für MySQL-Server, die InnoDB-Tabellen verwenden. Bei InnoDB ist kein Abfrage-Cache erforderlich. Speicherplatz freigeben, wenn eine Tabelle oder Datenbank DROP
ed ist. Wenn Sie SSDs verwenden, ist das Flushing ein redundanter Vorgang (SDDs sind nicht sequenziell).
default_storage_engine = InnoDB
query_cache_type = 0
innodb_file_per_table = 1
innodb_flush_neighbors = 0
Parallelität
Stellen Sie sicher, dass wir mehr als die Standard-4-Threads erstellen können, indem Sie innodb_thread_concurrency
auf unendlich (0) setzen. Dadurch kann InnoDB anhand einer optimalen Ausführung entscheiden.
innodb_thread_concurrency = 0
innodb_read_io_threads = 64
innodb_write_io_threads = 64
Festplattenauslastung
Legen Sie die Kapazität (normale Last) und die Kapazität_max (absolutes Maximum) von IOPS für MySQL fest. Der Standardwert 200 ist für HDDs in Ordnung, aber heutzutage werden SSDs, die Tausende IOPS-fähig sind, wahrscheinlich dazu veranlasst, diese Anzahl anzupassen. Es gibt viele Tests, die Sie zur Bestimmung von IOPS ausführen können. Die oben genannten Werte sollten annähernd die Grenze sein, wenn Sie einen dedizierten MySQL Server betreiben . Wenn Sie andere Dienste auf demselben Computer ausführen, sollten Sie die Zuteilung entsprechend vornehmen.
innodb_io_capacity = 2500
innodb_io_capacity_max = 3000
RAM-Auslastung
Stellen Sie den verfügbaren Arbeitsspeicher auf MySQL ein. Während die Faustregel 70-80% beträgt, hängt dies wirklich davon ab, ob Ihre Instanz für MySQL reserviert ist und wie viel RAM verfügbar ist. Verschwenden Sie keinen RAM (dh Ressourcen), wenn Sie viel zur Verfügung haben.
innodb_buffer_pool_size = 10G
Sichere MySQL-Verschlüsselung
Die Standardverschlüsselung aes-128-ecb
verwendet den EZB-Modus (Electronic Codebook). Fügen Sie stattdessen der Konfigurationsdatei Folgendes hinzu:
block_encryption_mode = aes-256-cbc