MyISAM und InnoDB sind die gängigsten Speicher-Engines für MySQL. Im vorherigen Artikel haben wir über den Unterschied zwischen InnoDB und MyISAM gesprochen. Da MyISAM keine Transaktionen unterstützt, ist InnoDB die beste Wahl, wenn wir eine robuste transaktionale Speicher-Engine benötigen. Innodb erreicht eine hohe Parallelität durch Multi-Version Concurrency Control (MVCC) und implementiert vier SQL-Standardisolationsebenen, wobei die Standardebene die So legen Sie InnoDB als Standard-Engine fest:
Allgemeine Konfigurationsparameter von InnoDB: #InnoDB speichert das Datenwörterbuch und den internen Datenstruktur-Pufferpool. 16 MB sind groß genug. innodb_additional_mem_pool_size = 16 M #InnoDB wird zum Zwischenspeichern von Daten, Indizes, Sperren, Einfügepuffern, Datenwörterbüchern usw. verwendet. #Wenn es sich um einen dedizierten DB-Server handelt und die InnoDB-Engine das Hauptszenario ist, können Sie sie normalerweise auf 50 % des physischen Speichers einstellen #Wenn es sich um einen nicht dedizierten DB-Server handelt, können Sie zunächst versuchen, ihn auf 1/4 des Speichers einzustellen und ihn bei Problemen anzupassen. #Der Standardwert ist 8 MB, was sehr schlecht ist. Dies ist auch der Grund, warum viele Leute denken, dass InnoDB nicht so gut ist wie MyISAM. innodb_buffer_pool_size = 4G #InnoDB-Initialisierungsgröße für gemeinsam genutzte Tablespaces. Der Standardwert beträgt 10 MB, was auch sehr knifflig ist. Ändern Sie ihn auf 1 GB und erweitern Sie innodb_data_file_path = ibdata1:1G:autoextend automatisch. #Wenn Sie diese Option nicht verstehen, wird empfohlen, sie auf 1 zu setzen. Dies kann die Datenzuverlässigkeit besser schützen und einen gewissen Einfluss auf die Leistung haben, ist jedoch steuerbar innodb_flush_log_at_trx_commit = 1 #InnoDB-Logpuffer, normalerweise ist eine Einstellung von 64 MB ausreichend innodb_log_buffer_size = 64M #InnoDB Redo-Log-Größe, normalerweise reichen 256 MB innodb_log_file_size = 256M #InnoDB Redo-Logdateigruppe, normalerweise reicht es aus, sie auf 2 zu setzen innodb_log_files_in_group = 2 #Aktivieren Sie den unabhängigen Tablespace-Modus von InnoDB zur einfachen Verwaltung innodb_file_per_table = 1 # Aktivieren Sie die Statusdatei von InnoDB, damit Administratoren sie anzeigen, überwachen usw. können. innodb_status_file = 1 #Setzen Sie die Transaktionsisolationsstufe auf READ-COMMITTED, um die Transaktionseffizienz zu verbessern. Normalerweise werden die Anforderungen an die Transaktionskonsistenz erfüllt. transaction_isolation = READ-COMMITTED Beachtenswert sind auch die weiteren Konfigurationsmöglichkeiten: #Legen Sie die maximale Anzahl gleichzeitiger Verbindungen fest. Wenn das Front-End-Programm PHP ist, können Sie es entsprechend erhöhen, aber nicht zu sehr. #Wenn das Front-End-Programm einen Verbindungspool verwendet, können Sie ihn entsprechend nach unten anpassen, um zu viele Verbindungen zu vermeiden max_connections = 60 #Die maximale Anzahl von Verbindungsfehlern kann entsprechend erhöht werden, um zu verhindern, dass der Front-End-Host nach häufigen Verbindungsfehlern von MySQL abgelehnt wird max_connect_errors = 100000 #Legen Sie den Schwellenwert für langsame Abfragen fest. Es wird empfohlen, den Mindestwert auf 1 Sekunde festzulegen long_query_time = 1 #Legen Sie den Maximalwert der temporären Tabelle fest. Dieser wird für jede Verbindung zugewiesen. Es ist nicht ratsam, ihn zu groß einzustellen. max_heap_table_size und tmp_table_size sollten auf die gleiche Größe eingestellt werden max_heap_table_size = 96M temporäre Tabellengröße = 96 M #Jede Verbindung weist einige Sortier-, Verbindungs- und andere Puffer zu. Im Allgemeinen reicht eine Einstellung auf 2 MB aus. sort_buffer_size = 2M Join-Puffergröße = 2 M Lesepuffergröße = 2 M read_rnd_buffer_size = 2M #Es wird empfohlen, den Abfragecache auszuschalten, da dies die Leistung beeinträchtigen kann. query_cache_size = 0 #Wenn die Hauptdatenbank InnoDB ist, kann die key_buffer_size für MyISAM kleiner eingestellt werden. 8 MB reichen aus. #Wenn die Hauptdatenbank MyISAM ist, kann sie größer eingestellt werden, aber nicht mehr als 4 G #Hier wird dringend empfohlen, die MyISAM-Engine nicht zu verwenden. Standardmäßig wird die InnoDB-Engine key_buffer_size = 8M verwendet. #Legen Sie den Schwellenwert für das Verbindungstimeout fest. Wenn das Front-End-Programm eine kurze Verbindung verwendet, wird empfohlen, diese beiden Werte zu kürzen. #Wenn das Front-End-Programm eine lange Verbindung verwendet, können Sie diese beiden Optionen direkt auskommentieren und die Standardkonfiguration (8 Stunden) verwenden. interaktives_Timeout = 120 Wartezeitüberschreitung = 120 Einige Vorschläge zum Entwurf der Datentabelle der InnoDB-Engine:
InnoDB-Sperrtypen Die InnoDB-Speicher-Engine implementiert die folgenden zwei Standard-Sperren auf Zeilenebene
Kompatibilität von gemeinsam genutzten Sperren und exklusiven Sperren Beachten: (1) Sowohl S- als auch X-Sperren sind Zeilensperren. Mit Kompatibilität ist die Kompatibilität von Sperren für denselben Datensatz (dieselbe Zeile) gemeint. (2) Die Transaktion T1 hat bereits eine gemeinsame Sperre für die Zeile R erhalten. Eine andere Transaktion T2 kann sofort eine gemeinsame Sperre für die Zeile R erhalten. Diese Situation wird als Sperrenkompatibilität bezeichnet. Wenn die Transaktion T3 eine exklusive Sperre für Zeile R erhalten möchte, muss sie warten, bis die Transaktionen T1 und T2 die gemeinsame Sperre für Zeile R freigeben. In dieser Situation kommt es zu einer Sperreninkompatibilität. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an Das könnte Sie auch interessieren:
|
<<: React implementiert dynamische Popup-Fensterkomponente
>>: Implementierung eines einfachen Rechners auf Basis von JavaScript
HTML-Kommentarfeld mit Emoticons. Die Emoticons w...
In der MySQL-Dokumentation können MySQL-Variablen...
Inhaltsverzeichnis Parser und Präprozessoren Abfr...
Die Drag & Drop-API fügt ziehbare Elemente zu...
Die utf8mb4-Kodierung ist eine Obermenge der utf8...
IFNULL(Ausdruck1,Ausdruck2) Wenn expr1 nicht NULL...
1. Übersicht 1.1 Grundlegende Konzepte: Docker is...
Beim dynamischen Verketten von Zeichenfolgen verw...
In der fünften Ausgabe von Web Skills wird ausdrü...
Beim Schreiben des HTTP-Moduls von nginx müssen d...
Kapitel 1 Installation des Quellcodes Die Install...
Der Wert der Hintergrundeigenschaft in CSS Hinter...
Möglicherweise müssen Sie in Linux manchmal symbo...
In diesem Artikel wird der spezifische Code der o...
Aus beruflichen Gründen habe ich vor Kurzem einig...