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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow