Szenario 1. Pflegen Sie ein Bürgersystem mit einem Feld für die ID-Nummer 2. Der Geschäftscode kann sicherstellen, dass keine zwei doppelten ID-Nummern geschrieben werden (wenn das Unternehmen dies nicht garantieren kann, können Sie sich auf den eindeutigen Index der Datenbank verlassen, um dies einzuschränken). 3. Allgemeine SQL-Abfrageanweisungen: SELECT name FROM CUser WHERE id_card = 'XXX' 4. Erstellen Sie einen Index
Angenommen, die Werte im Feld k werden nicht wiederholt Abfrageprozess 1. Abfrageanweisung: 2. Abfragevorgang
3. Für gemeinsame Indizes
4. Für einen eindeutigen Index
Leistungsunterschiede 1. Leistungsunterschied: sehr gering 2. InnoDB-Daten werden in Datenseiteneinheiten gelesen und geschrieben, der Standardwert beträgt 16 KB 3. Wenn ein Datensatz gelesen werden muss, wird der Datensatz selbst nicht von der Festplatte gelesen, sondern in Einheiten von Datenseiten. 4. Wenn der Datensatz mit k = 5 gefunden wird, befindet sich die Datenseite, auf der er sich befindet, bereits im Speicher 5. Für normale Indizes sind nur eine weitere Zeigersuche und eine weitere Berechnung erforderlich – der CPU-Verbrauch ist sehr gering
Änderungspuffer 1. Wenn eine Datenseite aktualisiert werden muss und sich die Datenseite im Speicher befindet, wird sie direkt aktualisiert 2. Wenn sich die Datenseite nicht im Speicher befindet, ohne die Datenkonsistenz zu beeinträchtigen
3. Änderungspuffer sind persistente Daten, von denen eine Kopie im Speicher vorhanden ist und die auch auf die Festplatte geschrieben werden 4. Notieren Sie den Aktualisierungsvorgang zuerst im Änderungspuffer, um zufällige Festplattenlesevorgänge zu reduzieren und die Ausführungsgeschwindigkeit der Anweisung zu verbessern 5. Darüber hinaus erfordert das Lesen von Datenseiten in den Speicher die Belegung des Pufferpools. Durch die Verwendung des Changenge-Puffers kann die Belegung des Speichers vermieden und die Speicherauslastung verbessert werden 6. Der Änderungspuffer verwendet den Speicher im Pufferpool und kann nicht unbegrenzt vergrößert werden. Der Steuerparameter innodb_change_buffer_max_size # Standard ist 25, Maximum ist 50 mysql> VARIABLEN WIE '%innodb_change_buffer_max_size%' ANZEIGEN; +-------------------------------+----------+ | Variablenname | Wert | +-------------------------------+----------+ | innodb_change_buffer_max_size | 25 | +-------------------------------+----------+ verschmelzen 1. Zusammenführen: Wenden Sie die Operationen im Änderungspuffer auf die ursprüngliche Datenseite an 2. Der Ausführungsprozess der Zusammenführung
3. Nachdem die Zusammenführung ausgeführt wurde, wurden die Datenseite im Speicher und die dem Änderungspuffer entsprechende Festplattenseite nicht geändert und sind fehlerhafte Seiten.
4. Zeitpunkt des Auslösens
Nutzungsbedingungen 1. Bei einem eindeutigen Index muss bei allen Aktualisierungsvorgängen zunächst ermittelt werden, ob der Vorgang die Eindeutigkeitsbeschränkung verletzt. 2. Die Aktualisierung des eindeutigen Index kann den Änderungspuffer nicht verwenden, nur der allgemeine Index kann den Änderungspuffer verwenden
Anwendungsszenarien 1. Je mehr Änderungen eine Datenseite vor dem Zusammenführen im Änderungspuffer aufgezeichnet hat, desto größer ist der Nutzen. 2. Bei Unternehmen mit mehr Schreib- als Lesevorgängen ist die Wahrscheinlichkeit, dass auf eine Seite unmittelbar nach dem Schreiben zugegriffen wird, äußerst gering. Daher ist die Verwendung eines Änderungspuffers zu diesem Zeitpunkt am effektivsten.
3. Wenn der Aktualisierungsmodus eines Unternehmens lautet: Die Abfrage wird sofort nach dem Schreiben ausgeführt
Aktualisierungsprozess Einfügen(4,400) Die Zielseite befindet sich im Speicher
Die Zielseite befindet sich nicht im Speicher 1. Für einen eindeutigen Index müssen Sie die Datenseite in den Speicher lesen, feststellen, ob ein Konflikt vorliegt, und den Wert einfügen
Zeichnen Sie bei allgemeinen Indizes einfach den Aktualisierungsvorgang im Änderungspuffer auf.
Indexauswahl 1. Es gibt keinen großen Unterschied in der Abfrageleistung zwischen einem gemeinsamen Index und einem eindeutigen Index. Die wichtigste Überlegung ist die Aktualisierungsleistung. Es wird empfohlen, einen gemeinsamen Index zu wählen. 2. Szenarien, in denen es empfohlen wird, den Änderungspuffer zu schließen
mysql> VARIABLEN WIE '%innodb_change_buffering%' ANZEIGEN; +-------------------------+----------+ | Variablenname | Wert | +-------------------------+----------+ | innodb_change_buffering | alle | +-------------------------+----------+ # Gültige Werte (>= 5.5.4) keine / Einfügungen / Löschungen / Änderungen / Löschvorgänge / alle # Gültige Werte (<= 5.5.3) keine / Einfügungen # Der Vorgänger des Änderungspuffers ist der Einfügepuffer, der nur Einfügevorgänge optimieren kann Änderungspuffer + Redolog Aktualisierungsprozess Aktueller Status des K-Baums: Nach dem Auffinden des entsprechenden Speicherorts befindet sich die Datenseite Seite 1, auf der sich k1 befindet, im Speicher, und die Datenseite Seite 2, auf der sich k2 befindet, befindet sich nicht im Speicher EINFÜGEN IN t(id,k) WERTE (id1,k1),(id2,k2); # Speicher: Pufferpool # redolog:ib_logfileX # Datentabellenbereich: t.ibd # Systemtabellenbereich: ibdata1 1. Seite 1 ist im Speicher, aktualisiere den Speicher direkt 2. Seite 2 ist nicht im Speicher, Datensatz im Wechslerpuffer: addiere (id2,k2) zu Seite 2 3. Die beiden oben genannten Aktionen sind im Redolog enthalten (sequentielles Schreiben auf die Festplatte). 4. Die Transaktion ist nun abgeschlossen und die Kosten für die Ausführung der Update-Anweisung sind sehr gering
5. Wenn eine Transaktion festgeschrieben wird, werden die Datensätze für die Änderungspufferoperation auch im Redolog aufgezeichnet
Die gepunktete Linie ist der Hintergrundvorgang und hat keinen Einfluss auf die Reaktionszeit des Aktualisierungsvorgangs Lesevorgang Annahme: Die Lese-Anweisung erfolgt kurz nach der Aktualisierungsanweisung, die Daten im Speicher sind noch vorhanden und sie haben nichts mit dem Systemtabellenbereich (ibdata1) und dem Redolog (ib_logfileX) zu tun. Wählen Sie * aus t, wobei k in (k1, k2); 1. Seite 1 lesen und direkt aus dem Speicher zurückgeben (zu diesem Zeitpunkt ist Seite 1 möglicherweise noch eine schmutzige Seite und wurde noch nicht auf die Festplatte geschrieben) 2. Seite 2 lesen, die Datenseite durch zufälliges Lesen der Festplatte in den Speicher lesen und dann das Betriebsprotokoll im Änderungspuffer anwenden (Zusammenführen).
Verbessern der Update-Leistung 1. Redolog: spart zufälligen E/A-Verbrauch beim Schreiben auf die Festplatte (sequentielles Schreiben) 2. Puffer ändern: spart IO-Verbrauch bei zufälligen Festplattenlesevorgängen Verweise „MySQL Praxis 45 Vorlesungen“ 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. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Vergleich zweier Implementierungsmethoden der Vue-Dropdown-Liste
>>: Detailliertes Tutorial zur Installation von Docker und Nvidia-Docker unter Ubuntu 16.04
Das Thema Big Data wird immer wichtiger und wer m...
Ich habe kürzlich den Quellcode von Vue studiert ...
Ich habe den Computer neu installiert und die neu...
Ein allgemeines Entwicklungsbedürfnis besteht dar...
Unabhängig davon, ob Sie an Software oder Websites...
Beginnen wir mit einer Beschreibung des Problems:...
Lassen Sie uns nun mehrere Situationen zur Steuer...
Jede dieser 16 Sites ist eine sorgfältige Lektüre ...
Dies scheint mit der neuen Version nicht mehr mög...
1. Fehler beim Verbinden mit Master 'x@xxxx:x...
Inhaltsverzeichnis 1. Implementierungsprinzip des...
Inhaltsverzeichnis Vorwort Typinferenz Einengung ...
Inhaltsverzeichnis 1. Was ist eine Datenbank? 2. ...
Der digitale Scrolleffekt auf großen Bildschirmen...
Element UI implementiert mehrere Tabellen, die gl...