Heim System-Tutorial LINUX Die Entdeckungsreise von PostgreSQL

Die Entdeckungsreise von PostgreSQL

Jan 17, 2024 am 08:15 AM
linux linux教程 红帽 linux系统 linux命令 Linux-Zertifizierung Red Hat Linux Linux-Video

Die Entdeckungsreise von PostgreSQL

Postgres verfügt über mehrere Indextypen und jede neue Version scheint einige neue hinzuzufügen. Jeder Indextyp ist nützlich, aber welcher Typ verwendet werden soll, hängt von (1) der Art der Daten und manchmal (2) den zugrunde liegenden Daten in der Tabelle und (3) der Art der durchgeführten Suche ab. Im folgenden Inhalt stellen wir die Indextypen vor, die Sie in Postgres verwenden können, und zeigen, wann Sie welchen Indextyp verwenden sollten. Bevor wir beginnen, finden Sie hier eine Liste der Indextypen, durch die wir Sie führen:

B-Baum
Generalisierter invertierter Index (GIN)
Generalisierter invertierter Suchbaum (GiST)
Raumpartitioniertes GiST (SP-GiST)
Blockbereichsindex (BRIN)
Hash
Beginnen wir nun mit der Indizierung.

In Postgres sind B-Tree-Indizes die am häufigsten verwendeten Indizes

Wenn Sie einen Abschluss in Informatik haben, ist die B-Tree-Indizierung möglicherweise der erste Index, den Sie lernen. B-Tree-Indizes erstellen einen Baum, der immer sein Gleichgewicht behält. Wenn es anhand des Index nach etwas sucht, durchsucht es den Baum, um den Schlüssel zu finden, und gibt die gesuchten Daten zurück. Die Verwendung eines Index ist erheblich schneller als ein sequenzieller Scan, da nur wenige Seiten gelesen werden müssen (wenn Sie nur wenige Datensätze zurückgeben), im Gegensatz zum sequenziellen Scannen von Tausenden von Datensätzen.

Wenn Sie eine standardmäßige CREATE INDEX-Anweisung ausführen, wird ein B-Tree-Index für Sie erstellt. B-Tree-Indizes sind für die meisten Datentypen wertvoll, z. B. Text, Zahlen und Zeitstempel. Wenn Sie mit der Verwendung von Indizes in Ihrer Datenbank noch nicht vertraut sind und nicht zu viele der erweiterten Funktionen von Postgres in Ihrer Datenbank verwenden, ist die Verwendung eines Standard-B-Tree-Index wahrscheinlich die beste Option.

GIN-Index für mehrwertige Spalten

Der verallgemeinerte invertierte Index, allgemein GIN genannt, eignet sich hauptsächlich für Datentypen, bei denen eine einzelne Spalte mehrere Werte enthält.

Laut Postgres-Dokumentation:

„GIN ist für die Handhabung von Situationen konzipiert, in denen der indizierte Eintrag ein zusammengesetzter Wert ist und die vom Index verarbeitete Abfrage nach einem Wert suchen muss, der im zusammengesetzten Eintrag vorkommt. Dieser Eintrag könnte beispielsweise ein Dokument sein und der Die Abfrage kann nach bestimmten Zeichen suchen, die im Dokument enthalten sind.“

Die häufigsten Datentypen in diesem Bereich sind:

hStore
Array
Reichweite
JSONB
Einer der befriedigendsten Aspekte von GIN-Indizes ist ihre Fähigkeit, in zusammengesetzten Werten gespeicherte Daten zu verstehen. Da ein GIN-Index jedoch spezifische Kenntnisse der Datenstruktur für jeden einzelnen hinzugefügten Typ erfordert, werden nicht alle Datentypen vom GIN-Index unterstützt.

GiST-Index für Zeilen mit überlappenden Werten

Der Generalized Inverted Search Tree (GiST)-Index eignet sich vor allem dann, wenn sich Ihre Daten mit anderen Datenzeilen in derselben Spalte überschneiden. GiST-Indizes lassen sich am besten nutzen, wenn Sie einen Geometriedatentyp deklarieren und wissen möchten, ob zwei Polygone einige Punkte enthalten. In einem Fall kann ein bestimmter Punkt in einer Box enthalten sein, während andere Punkte gleichzeitig nur in einem Polygon existieren. Gängige mit GiST indizierte Datentypen sind:

Geometrietyp
Texttypen, die eine Volltextsuche erfordern
Es gibt viele feste Grenzen für die Größe von GiST-Indizes, andernfalls können GiST-Indizes extrem groß werden. Aus diesem Grund sind GiST-Indizes verlustbehaftet (ungenau).

Laut offizieller Dokumentation:

„GiST-Indizes sind verlustbehaftet, was bedeutet, dass der Index falsche Übereinstimmungen erzeugen kann. Daher ist es notwendig, die echten Tabellenzeilen zu überprüfen, um falsche Übereinstimmungen zu beseitigen (PostgreSQL führt diese Aktion bei Bedarf automatisch aus)“

Das bedeutet nicht, dass Sie ein falsches Ergebnis erhalten, es bedeutet lediglich, dass Postgres einen kleinen zusätzlichen Aufwand leistet, um diese falschen Ergebnisse herauszufiltern, bevor es die Daten an Sie zurücksendet.

Besonderer Tipp: GIN- und GiST-Indizes können häufig für denselben Datentyp verwendet werden. Normalerweise hat man eine gute Leistung, nimmt aber viel Speicherplatz ein und umgekehrt. Wenn es um GIN vs. GiST geht, gibt es keine einheitliche Lösung, die in jeder Situation funktioniert, aber die oben genannten Regeln sollten für die meisten gängigen Situationen gelten.

SP-GiST-Index für größere Datenmengen

Der räumlich partitionierte GiST-Index (SP-GiST) übernimmt den räumlich partitionierten Baum von Purdue Research. SP-GiST-Indizes werden häufig verwendet, wenn Ihre Daten einen natürlichen Clusterfaktor aufweisen und kein ausgeglichener Baum sind. Telefonnummern sind ein gutes Beispiel (zumindest US-Telefonnummern). Sie haben das folgende Format:

3-stellige Vorwahl
3-stellige Vorwahlnummer (bezogen auf alte Telefonzentralen)
4-stellige Zeilennummer
Dies bedeutet, dass es einen natürlichen Clusterfaktor bei den ersten drei Ziffern des ersten Satzes gibt, gefolgt vom zweiten Satz aus drei Ziffern, und dann sind die Zahlen gleichmäßig verteilt. Allerdings gibt es in einigen Vorwahlen von Telefonnummern einen höheren Sättigungszustand als in anderen. Das Ergebnis kann ein sehr unausgeglichener Baum sein. Da es im Vorfeld einen natürlichen Aggregationsfaktor gibt und die Daten nicht gleichmäßig verteilt sind, könnten Daten wie Telefonnummern ein guter Fall für SP-GiST sein.

BRIN-Index für größere Datenmengen

Block Range Indexes (BRIN) konzentrieren sich auf bestimmte Situationen wie SP-GiST. Sie werden am besten verwendet, wenn die Daten eine natürliche Reihenfolge haben und die Datengröße oft groß ist. Wenn Sie eine Milliarde Datensätze in chronologischer Reihenfolge haben, kann BRIN nützlich sein. Wenn Sie einen großen Datensatz abfragen, der natürlich gruppiert ist, beispielsweise mehrere Postleitzahlen, kann BRIN Ihnen dabei helfen, sicherzustellen, dass ähnliche Postleitzahlen an nahe beieinander liegenden Orten auf der Festplatte gespeichert werden.

Wenn Sie eine sehr große Datenbank haben, die nach Datum oder Postleitzahl sortiert ist, können Sie mit dem BRIN-Index einige unnötige Daten sehr schnell überspringen oder ausschließen. Darüber hinaus sind BRIN-Indizes im Vergleich zur Gesamtdatengröße relativ klein, sodass BRIN-Indizes bei einem großen Datensatz eine bessere Leistung erzielen können.

Hash-Index, endlich keine Angst mehr vor einem Absturz

Hash-Indizes gibt es in Postgres schon seit Jahren. Bis zur Veröffentlichung von Postgres 10 gab es jedoch einen großen Vorbehalt hinsichtlich ihrer Verwendung: Sie waren nicht WAL-protokolliert. Das heißt, wenn Ihr Server abstürzt und Sie z. B. mit wal-g kein Failover auf einen Standby-Server oder eine Wiederherstellung aus einem Archiv durchführen können, verlieren Sie diesen Index, bis Sie ihn neu erstellen. Mit der Veröffentlichung von Postgres 10 sind sie jetzt WAL-protokolliert, sodass Sie darüber nachdenken können, sie wieder zu verwenden, aber die eigentliche Frage ist: Sollten Sie das tun?

Hash-Indizes bieten manchmal schnellere Suchvorgänge als B-Tree-Indizes und lassen sich auch schnell erstellen. Das größte Problem besteht darin, dass sie nur auf „Gleichheits“-Vergleichsoperationen beschränkt sind, sodass Sie sie nur für die Suche nach exakten Übereinstimmungen verwenden können. Dadurch sind Hash-Indizes deutlich weniger flexibel als häufig verwendete B-Tree-Indizes, und Sie sollten sie nicht als Ersatz, sondern als Index für Sonderfälle betrachten.

Welches sollten Sie verwenden? Wir haben gerade viel vorgestellt. Wenn Sie ein wenig Angst haben, ist das normal. Wenn Sie das bereits wissen, erstellt CREATE INDEX immer einen Index für Sie mithilfe eines B-Baums, und die gute Nachricht ist, dass Postgres für die meisten Datenbanken eine sehr gute oder sehr gute Leistung erbringt. :) Wenn Sie erwägen, weitere Postgres-Funktionen zu verwenden, finden Sie hier eine Cheat-Liste, wenn Sie andere Postgres-Indextypen verwenden:

B-Tree – geeignet für die meisten Datentypen und Abfragen

GIN – für JSONB/hstore/arrays
GiST – für Volltextsuche und geometrische Datentypen
SP-GiST – geeignet für große Datensätze mit natürlichen Aggregationsfaktoren, aber ungleichmäßiger Verteilung
BRIN – geeignet für wirklich große Datensätze mit sequentieller Anordnung
Hash – gut für Gleichheitsoperationen, aber normalerweise ist immer noch ein B-Tree-Index alles, was Sie brauchen.
Wenn Sie Fragen oder Feedback zu diesem Artikel haben, können Sie sich gerne unserem Slack-Kanal anschließen.

Das obige ist der detaillierte Inhalt vonDie Entdeckungsreise von PostgreSQL. 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)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
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)

So starten Sie Nginx unter Linux So starten Sie Nginx unter Linux Apr 14, 2025 pm 12:51 PM

Schritte zum Starten von Nginx unter Linux: Überprüfen Sie, ob Nginx installiert ist. Verwenden Sie SystemCTL Start Nginx, um den Nginx -Dienst zu starten. Verwenden Sie SystemCTL aktivieren NGINX, um das automatische Start von NGINX beim Systemstart zu aktivieren. Verwenden Sie den SystemCTL -Status NGINX, um zu überprüfen, ob das Startup erfolgreich ist. Besuchen Sie http: // localhost in einem Webbrowser, um die Standard -Begrüßungsseite anzuzeigen.

So überprüfen Sie, ob Nginx gestartet wird So überprüfen Sie, ob Nginx gestartet wird Apr 14, 2025 pm 01:03 PM

So bestätigen Sie, ob Nginx gestartet wird: 1. Verwenden Sie die Befehlszeile: SystemCTL Status Nginx (Linux/Unix), Netstat -ano | FindStr 80 (Windows); 2. Überprüfen Sie, ob Port 80 geöffnet ist; 3. Überprüfen Sie die Nginx -Startmeldung im Systemprotokoll. 4. Verwenden Sie Tools von Drittanbietern wie Nagios, Zabbix und Icinga.

So starten Sie den Nginx -Server So starten Sie den Nginx -Server Apr 14, 2025 pm 12:27 PM

Das Starten eines Nginx-Servers erfordert unterschiedliche Schritte gemäß verschiedenen Betriebssystemen: Linux/UNIX-System: Installieren Sie das NGINX-Paket (z. B. mit APT-Get oder Yum). Verwenden Sie SystemCTL, um einen Nginx -Dienst zu starten (z. B. sudo systemctl start nginx). Windows -System: Laden Sie Windows -Binärdateien herunter und installieren Sie sie. Starten Sie Nginx mit der ausführbaren Datei nginx.exe (z. B. nginx.exe -c conf \ nginx.conf). Unabhängig davon, welches Betriebssystem Sie verwenden, können Sie auf die Server -IP zugreifen

So lösen Sie Nginx403 -Fehler So lösen Sie Nginx403 -Fehler Apr 14, 2025 pm 12:54 PM

Der Server verfügt nicht über die Berechtigung, auf die angeforderte Ressource zuzugreifen, was zu einem NGINX 403 -Fehler führt. Zu den Lösungen gehören: Überprüfung der Dateiberechtigungen. Überprüfen Sie die Konfiguration .htaccess. Überprüfen Sie die Nginx -Konfiguration. Konfigurieren Sie Selinux -Berechtigungen. Überprüfen Sie die Firewall -Regeln. Fehlerbehebung bei anderen Ursachen wie Browserproblemen, Serverausfällen oder anderen möglichen Fehlern.

So lösen Sie Nginx403 So lösen Sie Nginx403 Apr 14, 2025 am 10:33 AM

Wie fixiere ich Nginx 403 Verbotener Fehler? Überprüfen Sie die Datei- oder Verzeichnisberechtigungen; 2.Htaccess -Datei prüfen; 3. Überprüfen Sie die Konfigurationsdatei der Nginx; 4. Starten Sie Nginx neu. Weitere mögliche Ursachen sind Firewall -Regeln, Selinux -Einstellungen oder Anwendungsprobleme.

So lösen Sie Nginx304 Fehler So lösen Sie Nginx304 Fehler Apr 14, 2025 pm 12:45 PM

Antwort auf die Frage: 304 Nicht geänderter Fehler gibt an, dass der Browser die neueste Ressourcenversion der Client -Anfrage zwischengespeichert hat. Lösung: 1. Löschen Sie den Browser -Cache; 2. Deaktivieren Sie den Browser -Cache; 3. Konfigurieren Sie Nginx, um den Client -Cache zu ermöglichen. 4. Überprüfen Sie die Dateiberechtigungen; 5. Datei Hash prüfen; 6. Deaktivieren Sie CDN oder Reverse Proxy -Cache; 7. Starten Sie Nginx neu.

Wie kann ich überprüfen, ob Nginx begonnen wird? Wie kann ich überprüfen, ob Nginx begonnen wird? Apr 14, 2025 pm 12:48 PM

Verwenden Sie unter Linux den folgenden Befehl, um zu überprüfen, ob Nginx gestartet wird: SystemCTL -Status Nginx Richter basierend auf der Befehlsausgabe: Wenn "aktiv: aktiv (lief) angezeigt wird, wird Nginx gestartet. Wenn "Active: Inactive (Dead)" angezeigt wird, wird Nginx gestoppt.

So reinigen Sie das Nginx -Fehlerprotokoll So reinigen Sie das Nginx -Fehlerprotokoll Apr 14, 2025 pm 12:21 PM

Das Fehlerprotokoll befindet sich in/var/log/nginx (Linux) oder/usr/local/var/log/nginx (macOS). Verwenden Sie die Befehlszeile, um die Schritte zu beseitigen: 1. Sicherung des ursprünglichen Protokolls; 2. Erstellen Sie eine leere Datei als neues Protokoll; 3. Starten Sie den Nginx -Dienst neu. Die automatische Reinigung kann auch mit Tools von Drittanbietern wie lehnte oder konfiguriertem verwendet werden.

See all articles