Heim Datenbank MySQL-Tutorial Detaillierte Erläuterung des Unterschieds zwischen gewöhnlichen Indizes und eindeutigen Indizes in MySQL

Detaillierte Erläuterung des Unterschieds zwischen gewöhnlichen Indizes und eindeutigen Indizes in MySQL

Mar 04, 2020 pm 04:17 PM
mysql 区别 eindeutiger Index

Dieser Artikel stellt den Unterschied zwischen gewöhnlichen Indizes und eindeutigen Indizes in MySQL vor. Ich hoffe, dass er für Freunde, die MySQL lernen, hilfreich sein wird.

Detaillierte Erläuterung des Unterschieds zwischen gewöhnlichen Indizes und eindeutigen Indizes in MySQL

Detaillierte Erklärung des Unterschieds zwischen gewöhnlichem Index und eindeutigem Index in MySQL

Der Unterschied zwischen Abfrage und Update

Es gibt keinen Unterschied in den Abfragefunktionen zwischen diesen beiden Indextypen. Der Hauptaspekt ist die Auswirkung auf die Update-Leistung. Es wird empfohlen, möglichst normale Indizes zu wählen.

(Kostenloses Lernvideo-Tutorial empfohlen: MySQL-Video-Tutorial)

1.1 MySQL-Abfragevorgang

■ Danach Der gewöhnliche Index

findet den ersten Datensatz, der die Bedingung erfüllt, und läuft weiter rückwärts, bis der erste Datensatz erreicht ist, der die Bedingung nicht erfüllt.

■ Eindeutiger Index

Da der Index die Eindeutigkeit definiert, wird die Suche direkt gestoppt, nachdem der erste Datensatz gefunden wurde, der die Bedingungen erfüllt.

Gewöhnliche Indizes werden noch einmal abgerufen, fast ohne Auswirkungen. Da InnoDB-Daten in Einheiten von Datenseiten gelesen und geschrieben werden, werden die Datensätze beim Lesen nicht direkt von der Festplatte gelesen. Stattdessen werden die Datenseiten zuerst in den Speicher gelesen und dann von den Datenseiten abgerufen.

Eine Datenseite ist standardmäßig 16 KB groß. Bei ganzzahligen Feldern kann eine Datenseite fast tausend Schlüssel enthalten. Sofern es sich bei den zu lesenden Daten nicht um den letzten Datensatz der Datenseite handelt, müssen Sie eine andere Datenseite lesen Diese Situation kommt selten vor und der CPU-Verbrauch ist grundsätzlich vernachlässigbar.

Daher gibt es hinsichtlich der Datenabfrage keinen Unterschied zwischen gewöhnlichen Indizes und eindeutigen Indizes.

1.2 MySQL-Aktualisierungsvorgang

Der Aktualisierungsvorgang aktualisiert die Daten auf der Festplatte nicht direkt. Er liest zuerst die Datenseite von der Festplatte in den Speicher und aktualisiert sie dann die Datenseite.

■ Gewöhnlicher Index

Lesen Sie die Datenseite von der Festplatte in den Speicher und aktualisieren Sie die Datenseite.

■ Eindeutiger Index

Lesen Sie die Datenseite von der Festplatte in den Speicher, bestimmen Sie, ob sie eindeutig ist, und aktualisieren Sie dann die Datenseite.

Da es in MySQL einen Änderungspuffermechanismus gibt, gibt es einen gewissen Unterschied bei der Aktualisierung gewöhnlicher Indizes und eindeutiger Indizes.

Der Zweck des Änderungspuffers besteht darin, IO-Vorgänge zu reduzieren und eine übermäßige Systemlast zu vermeiden. Der Vorgang des Schreibens von Daten auf die Datenseite im Änderungspuffer wird als Zusammenführen bezeichnet.

Wenn sich die Datenseite, die aktualisiert werden muss, im Speicher befindet, wird die Datenseite direkt aktualisiert. Wenn sich die Daten nicht im Speicher befinden, wird der Aktualisierungsvorgang zuerst im Änderungspuffer aufgezeichnet Wenn die Datenseite das nächste Mal gelesen wird, wird sie zusammengeführt. Auf der Datenseite verfügt der Änderungspuffer auch über eine reguläre Zusammenführungsstrategie. Die Zusammenführung wird auch während des normalen Herunterfahrens der Datenbank ausgelöst.

Für einen eindeutigen Index müssen Sie vor der Aktualisierung feststellen, ob die Daten eindeutig sind (dies kann nicht mit den Daten in der Tabelle wiederholt werden, wenn sich die Datenseite im Speicher befindet, können Sie sie direkt ermitteln und aktualisieren). Wenn es nicht im Speicher ist, müssen Sie es auslesen und prüfen, ob es eindeutig ist. Der Änderungspuffer wird nicht verwendet. Auch wenn sich die Datenseite nicht im Speicher befindet, muss sie dennoch gelesen werden.

Der Änderungspuffer nutzt den Speicher im Pufferpool und kann daher nicht unendlich vergrößert werden. Die Größe des Änderungspuffers kann dynamisch über den Parameter innodb_change_buffer_max_size festgelegt werden. Wenn dieser Parameter auf 50 eingestellt ist, bedeutet dies, dass die Größe des Änderungspuffers nur bis zu 50 % des Pufferpools belegen kann.

Schlussfolgerung: Ein eindeutiger Index kann keinen Änderungspuffer verwenden, es kann nur ein gewöhnlicher Index verwendet werden.

2. Der Unterschied zwischen Änderungspuffer und Redo-Log

2.1 Anwendbare Szenarien für Änderungspuffer

Änderung buffer Die Funktion besteht darin, die Häufigkeit von Aktualisierungsvorgängen und Cache-Aktualisierungsvorgängen zu reduzieren. Dies hat den Nachteil, dass Aktualisierungen nicht zeitnah erfolgen. Bei Tabellen mit häufigen Lesevorgängen wird die Verwendung des Änderungspuffers nicht empfohlen.

Da der Aktualisierungsvorgang gerade im Änderungspuffer aufgezeichnet wurde, wurde die Tabelle gelesen, die Datenseite wurde in den Speicher eingelesen und die Daten wurden sofort in die Datenseite eingefügt. Dies verringert nicht nur nicht den Leistungsverbrauch, sondern erhöht auch die Kosten für die Wartung des Änderungspuffers.

Geeignet für Tabellen mit mehr Schreibvorgängen und weniger Lesevorgängen.

2.2 Der Unterschied zwischen Änderungspuffer und Redo-Log

Lassen Sie uns ein Beispiel geben, um Redo-Log und Änderungspuffer zu verstehen. Wir führen die folgende SQL-Anweisung aus:

mysql> insert into t(id,k) values(id1,k1),(id2,k2);
Nach dem Login kopieren

Angenommen, (id1,k1) befindet sich auf Datenseite Seite 1 und (id2,k2) befindet sich auf Datenseite Seite 2. Und Seite 1 bleibt im Gedächtnis, Seite 2 nicht.

Der Ausführungsprozess ist wie folgt:

Schreiben Sie (id1,k1) direkt auf Seite 1;

Schreiben Sie „Write (id2) auf Seite 2“ in den Änderungspuffer ,k2)"Diese Nachricht;

Zeichnen Sie die beiden oben genannten Aktionen im Redo-Protokoll auf.

Nach Abschluss der oben genannten Schritte ist die Transaktion abgeschlossen. Die Kosten für die Ausführung dieser Aktualisierungsanweisung sind sehr gering, d. h. das Schreiben in zwei Speicherorte und das anschließende Schreiben auf eine Festplatte (die beiden Vorgänge zusammen schreiben eine Festplatte) und werden nacheinander geschrieben.

Diese Update-Anweisung umfasst vier Teile: Speicher, Redo-Log (ib_log_fileX), Datentabellenbereich (t.ibd) und Systemtabellenbereich (ibdata1).

Detaillierte Erläuterung des Unterschieds zwischen gewöhnlichen Indizes und eindeutigen Indizes in MySQL

如果要读数据的话,过程是怎样的?

mysql> select * from t where k in (k1, k2);
Nach dem Login kopieren

假设读操作在更新后不久,此时内存中还有 Page 1,没有 Page 2,那么读操作就和 redo log 以及 ibdata1 无关了。

从内存中获取到 Page 1 上的最新数据 (id1,k1);

将数据页 Page 2 读入内存,执行merge 操作,此时内存中的 Page 2 也有最新数据(id2,k2);

Detaillierte Erläuterung des Unterschieds zwischen gewöhnlichen Indizes und eindeutigen Indizes in MySQL

需要注意的是:

redo log中的数据,可能还没有 flush 到磁盘,磁盘中的 Page 1 和 Page 2 中并没有最新数据,但我们依然可以拿到最新数据(内存中的 Page 1 就是最新的,Page 2 虽然不是最新的,但是从磁盘读到内存中后,执行了merge操作,内存中的 Page 2 就是最新的了。)

如果此时 MySQL 异常宕机了,比如服务器异常掉电,change buffer 中的数据会不会丢?

change buffer 中的数据分为两部分,一部分是已经merge到ibdata1中的数据,这部分数据已经持久化,不会丢失。另一部分数据,还在 change buffer 中,没有merge 到ibdata1,分 3 种情况:

(1)change buffer 写入数据到内存,redo log 也已经写入(ib-log-filex),但是未 commit,binlog中也没有fsync到磁盘,这部分数据会丢失;

(2)change buffer 写入数据到内存,redo log 也已经写入(ib-log-filex),但是未 commit,binlog 已写入到磁盘,这部分不会多丢失,异常重启后会先从 binlog 恢复 redo log,再从 redo log 恢复 change buffer;

(3)change buffer 写入数据到内存,redo log 和 binlog 都已经fsync,直接从redo log 恢复,不会丢失。

redo log 主要节省的是随机写磁盘的 IO 消耗(转成顺序写),而 change buffer 主要节省的则是随机读磁盘的 IO 消耗

更多MySQL相关教程,请关注PHP中文网

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Unterschieds zwischen gewöhnlichen Indizes und eindeutigen Indizes in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Deepseek Was ist der Unterschied zwischen der R1- und V3 -Version Deepseek Was ist der Unterschied zwischen der R1- und V3 -Version Feb 19, 2025 pm 03:24 PM

Deepseek: Eingehender Vergleich zwischen R1- und V3-Versionen hilft Ihnen, den besten AI-Assistenten auszuwählen! Deepseek hat bereits zig Millionen von Benutzern, und seine KI -Dialogfunktion wurde gut aufgenommen. Aber sind Sie verwirrt, wenn Sie sich den Versionen der R1- und V3 stellen? In diesem Artikel werden die Unterschiede zwischen den beiden im Detail erläutert, um die am besten geeignete Version auszuwählen. Der Kernunterschied zwischen Deepseekl1 und V3-Version: Features Das Designziel der V3-Version konzentriert Milliarden bis 70 Milliarden MOE Hybrid -Expertenarchitektur, die Gesamtparameter sind bis zu 671 Milliarden, jedes Token wird um 37 Milliarden aktiviert

Zusammenfassung der FAQs für die Verwendung von Deepseek Zusammenfassung der FAQs für die Verwendung von Deepseek Feb 19, 2025 pm 03:45 PM

Deepseekai Tool User Guide und FAQ Deepseek ist ein leistungsstarkes KI -Intelligent -Tool. FAQ: Der Unterschied zwischen verschiedenen Zugriffsmethoden: Es gibt keinen Unterschied in der Funktion zwischen Webversion, App -Version und API -Aufrufen, und App ist nur ein Wrapper für die Webversion. Die lokale Bereitstellung verwendet ein Destillationsmodell, das der Vollversion von Deepseek-R1 geringfügig unteren ist, das 32-Bit-Modell theoretisch 90% Vollversionsfunktion. Was ist eine Taverne? SillyTervern ist eine Front-End-Oberfläche, die das KI-Modell über API oder Ollama anruft. Was ist Breaking Limit

Hat Bitcoin Aktien? Hat Bitcoin Aktien? Mar 03, 2025 pm 06:42 PM

Der Kryptowährungsmarkt boomt, und Bitcoin als Führungskraft hat die Aufmerksamkeit vieler Investoren auf sich gezogen. Viele Menschen sind neugierig: Haben Bitcoin Aktien? Die Antwort ist nein. Bitcoin selbst ist keine Aktie, aber Anleger können indirekt in Bitcoin-bezogene Vermögenswerte über verschiedene Kanäle investieren, die in diesem Artikel ausführlich erläutert werden. Alternativen zu Bitcoin -Investitionen: Anstatt direkt in Bitcoin zu investieren, können Anleger am Bitcoin -Markt teilnehmen. Dies ist eine relativ bequeme Option für Anleger, die an Aktieninvestitionen gewöhnt sind, ohne Bitcoin direkt halten zu müssen. Aktien des Bitcoin -Bergbauunternehmens: Das Geschäft dieser Unternehmen ist Bitcoin Mining und Holding Bitcoin

Was ist der Unterschied zwischen dem Handel vor dem Markt und nach dem Markt? Detaillierte Erläuterung der Unterschiede zwischen dem Handel mit Vormarkt und After-Market Was ist der Unterschied zwischen dem Handel vor dem Markt und nach dem Markt? Detaillierte Erläuterung der Unterschiede zwischen dem Handel mit Vormarkt und After-Market Mar 03, 2025 pm 11:54 PM

In den traditionellen Finanzmärkten bezieht sich der Handel vor dem Markt und nach dem Markt für Handelsaktivitäten außerhalb des regulären Handelszeitraums. Obwohl der Kryptowährungsmarkt rund um die Uhr handelt, bieten Handelsplattformen wie Bitget auch ähnliche Funktionen, insbesondere einige umfassende Plattformen, die gleichzeitig Aktien und Kryptowährungen handeln. In diesem Artikel werden die Unterschiede im Handel mit Vormarkt und After-Market klargestellt und die Auswirkungen auf den Währungspreis untersucht. Vier wichtige Unterschiede zwischen dem Handel vor dem Markt und nach dem Markt: Die Hauptunterschiede zwischen dem Handel vor dem Markt und dem Handel und regulären Handelsperioden nach dem Markt sind in vier Aspekten: Handelszeit, Liquidität, Preisschwankungen und Handelsvolumen: Handelszeit: Vormarkethandel erfolgt, bevor der offizielle Handel nach dem Handel nach dem Handel nach dem Handel nach dem Handel nach dem Handel nach dem Handel nach dem Handel ist. Liquidität: Die Liquidität des Handels vor und nach der Zeit ist niedrig, es gibt nur wenige Händler, und die Preisdifferenz und die Angebotspreisdifferenz ist groß.

Warum wird Bittensor als 'Bitcoin' in der KI -Strecke gesagt? Warum wird Bittensor als 'Bitcoin' in der KI -Strecke gesagt? Mar 04, 2025 pm 04:06 PM

Original -Titel: Bittensor = Aibitcoin? Bittensor nimmt ein Subnetzmodell an, das die Entstehung verschiedener KI -Lösungen ermöglicht und Innovation durch Tao -Token inspiriert. Obwohl der KI -Markt ausgereift ist, steht Bittensor mit wettbewerbsfähigen Risiken aus und kann anderen Open Source unterliegen

Gibt es einen Unterschied zwischen südkoreanischer Bitcoin und inländischer Bitcoin? Gibt es einen Unterschied zwischen südkoreanischer Bitcoin und inländischer Bitcoin? Mar 05, 2025 pm 06:51 PM

Der Bitcoin Investment Boom erhitzt sich weiter. Obwohl China einst der größte Markt für Bitcoin war, haben die politischen Auswirkungen zu Transaktionsbeschränkungen geführt. Heute ist Südkorea zu einem der wichtigsten Bitcoin -Märkte der Welt geworden und veranlasst Anleger, die Unterschiede zwischen ihm und seinem inländischen Bitcoin in Frage zu stellen. Dieser Artikel wird eine eingehende Analyse der Unterschiede zwischen den Bitcoin-Märkten der beiden Länder durchführen. Analyse der Unterschiede zwischen Südkorea und China Bitcoin -Märkten. Zum Beispiel war Ende Oktober 2024 der Preis für Bitcoin in Südkorea einst

Vertikaler Proxy: Anwendungsszenarien und Interpretation des disruptiven Potenzials von nativem Verschlüsselungsträger Vertikaler Proxy: Anwendungsszenarien und Interpretation des disruptiven Potenzials von nativem Verschlüsselungsträger Mar 04, 2025 am 10:21 AM

Künstliche Intelligenz -Agenten (AIAGENTS) integrieren sich schnell in den täglichen Betrieb von Unternehmen, von großen Unternehmen bis zu kleinen Unternehmen. Fast alle Bereiche haben begonnen, um Vertrieb, Marketing, Finanzen, Recht, IT, Projektmanagement, Logistik, Kundendienst und Workflow -Automatisierung zu verwenden. Wir bewegen uns aus einer Zeit der manuellen Verarbeitung von Daten, der Ausführung wiederholter Aufgaben und verwenden Excel -Tabellen bis zu einer Zeit des autonomen Betriebs durch AI -Agenten rund um die Uhr, was nicht nur die Effizienz verbessert, sondern auch die Kosten erheblich reduziert. Anwendungsfall von AI -Agenten in Web2: Perspektive von Ycombinator: Ein Tool für Verkaufs- und Marketingoptimierung, das die KI- und SMS -Technologie kombiniert. Bildai: Ein Modell, das architektonische Blaupausen lesen kann,

Erfahren Sie in einem Artikel mehr über die Unterschiede zwischen USDC, USDT und USD Erfahren Sie in einem Artikel mehr über die Unterschiede zwischen USDC, USDT und USD Jan 09, 2025 pm 02:47 PM

USDC (US-Dollar-Münze), USDT (Tether) und US-Dollar (USD) sind drei verschiedene Finanzinstrumente. USDC ist durch den US-Dollar gedeckt, weist eine hohe Stabilität auf und wird für den Handel und die Abwicklung von Kryptowährungen verwendet. USDT behauptet, durch den US-Dollar gedeckt zu sein, weist jedoch Stabilitätsprobleme auf. USD ist eine gesetzliche Währung mit hoher Liquidität und wird für tägliche Transaktionen und Investitionen verwendet.

See all articles