Le parcours de découverte de PostgreSQL
Postgres a plusieurs types d'index, et chaque nouvelle version semble en ajouter de nouveaux. Chaque type d'index est utile, mais le type à utiliser dépend (1) du type de données, parfois (2) des données sous-jacentes dans la table et (3) du type de recherche effectuée. Dans le contenu suivant, nous présenterons les types d'index que vous pouvez utiliser dans Postgres et quand vous devez utiliser quel type d'index. Avant de commencer, voici une liste de types d'index que nous allons vous guider :
B-Arbre
Indice inversé généralisé (GIN)
Arbre de recherche inversé généralisé (GiST)
Espace GiST partitionné (SP-GiST)
Indice de plage de blocs (BRIN)
Hachage
Commençons maintenant par l'indexation.
Si vous êtes diplômé en informatique, l'indexation B-Tree peut être le premier index que vous apprenez. Les index B-tree créent un arbre qui maintient toujours son équilibre. Lorsqu'il recherche quelque chose en fonction de l'index, il parcourt l'arborescence pour trouver la clé et renvoie les données que vous recherchez. L'utilisation d'un index est nettement plus rapide qu'une analyse séquentielle, car elle ne nécessite que la lecture de quelques pages (lorsque vous ne renvoyez que quelques enregistrements), par opposition à l'analyse séquentielle de milliers d'enregistrements.
Si vous exécutez une instruction CREATE INDEX standard, elle créera un index B-tree pour vous. Les index B-tree sont utiles pour la plupart des types de données, tels que le texte, les nombres et les horodatages. Si vous commencez tout juste à utiliser des index dans votre base de données et que vous n'utilisez pas trop de fonctionnalités avancées de Postgres sur votre base de données, l'utilisation d'un index B-Tree standard est probablement votre meilleure option.
Index GIN pour les colonnes à valeurs multiplesL'index inversé généralisé, généralement appelé GIN, convient principalement aux types de données lorsqu'une seule colonne contient plusieurs valeurs.
Selon la documentation Postgres :
"GIN est conçu pour gérer les situations dans lesquelles l'entrée en cours d'indexation est une valeur composée et la requête traitée par l'index doit rechercher une valeur qui apparaît dans l'entrée composée. Par exemple, cette entrée peut être un document et le La requête peut rechercher les caractères spécifiés contenus dans le document. »
Les types de données les plus courants inclus dans cette plage sont :
hStore
Tableau
Gamme
JSONB
L’un des aspects les plus satisfaisants des index GIN est leur capacité à comprendre les données stockées dans des valeurs composites. Toutefois, étant donné qu'un index GIN nécessite une connaissance spécifique de la structure des données pour chaque type individuel ajouté, tous les types de données ne sont pas pris en charge par l'index GIN.
L'index GiST (Generalized Inverted Seach Tree) convient principalement lorsque vos données chevauchent d'autres lignes de données dans la même colonne. La meilleure utilisation des index GiST est si vous déclarez un type de données géométriques et que vous souhaitez savoir si deux polygones contiennent des points. Dans un cas, un point particulier peut être contenu dans une boîte, alors que dans le même temps, d'autres points n'existent que dans un polygone. Les types de données courants indexés à l'aide de GiST sont :
Type de géométrie
Types de texte nécessitant une recherche en texte intégral
Il existe de nombreuses limites fixes sur la taille des index GiST, sinon les index GiST peuvent devenir extrêmement volumineux. Au prix de cela, les index GiST sont avec perte (inexacts).
Selon la documentation officielle :
« Les index GiST entraînent des pertes, ce qui signifie que l'index peut produire de fausses correspondances, il est donc nécessaire de vérifier les vraies lignes du tableau pour éliminer les fausses correspondances (PostgreSQL effectuera automatiquement cette action si nécessaire) »
.Cela ne signifie pas que vous obtiendrez un faux résultat, cela signifie simplement que Postgres effectue un petit travail supplémentaire pour filtrer ces faux résultats avant de vous renvoyer les données.
Remarque : les index GIN et GiST peuvent souvent être utilisés sur le même type de données. Généralement, on a de bonnes performances mais prend beaucoup d’espace disque, et vice versa. Lorsqu'il s'agit de GIN contre GiST, il n'existe pas de solution universelle qui fonctionnera dans toutes les situations, mais les règles ci-dessus devraient s'appliquer aux situations les plus courantes.
Indice SP-GiST pour des données plus volumineusesL'index GiST spatialement partitionné (SP-GiST) adopte l'arbre spatialement partitionné de Purdue Research. Les index SP-GiST sont souvent utilisés lorsque vos données ont un facteur de regroupement naturel et ne constituent pas un arbre équilibré. Les numéros de téléphone en sont un excellent exemple (au moins les numéros de téléphone américains le sont). Ils ont le format suivant :
Indicatif régional à 3 chiffres
Numéro de préfixe à 3 chiffres (lié aux anciens centraux téléphoniques)
Numéro de ligne à 4 chiffres
Cela signifie qu'il existe un facteur de regroupement naturel au niveau des trois premiers chiffres du premier ensemble, suivi du deuxième ensemble de trois chiffres, puis que les nombres sont répartis uniformément. Cependant, dans certains indicatifs régionaux de numéros de téléphone, la saturation est plus élevée que dans d’autres. Le résultat peut être un arbre très déséquilibré. Étant donné qu’il existe dès le départ un facteur d’agrégation naturel et que les données ne sont pas réparties de manière égale, des données telles que les numéros de téléphone pourraient constituer un bon argument pour SP-GiST.
Les index de plage de blocs (BRIN) se concentrent sur certaines situations comme SP-GiST, ils sont mieux utilisés lorsque les données ont un ordre naturel et que la taille des données est souvent importante. Si vous avez un milliard d'enregistrements par ordre chronologique, BRIN peut s'avérer utile. Si vous interrogez un grand ensemble de données naturellement regroupées, telles que plusieurs codes postaux, BRIN peut vous aider à garantir que des codes postaux similaires sont stockés à des emplacements proches sur le disque.
Lorsque vous disposez d'une très grande base de données triée par date ou code postal, l'index BRIN vous permet d'ignorer ou d'exclure très rapidement certaines données inutiles. De plus, les index BRIN sont relativement petits par rapport à la taille globale des données. Ainsi, lorsque vous disposez d'un ensemble de données volumineux, les index BRIN peuvent fonctionner mieux.
Hash index, enfin plus peur du crashLes index de hachage existent dans Postgres depuis des années, cependant, jusqu'à la sortie de Postgres 10, il y avait une énorme mise en garde concernant leur utilisation : ils n'étaient pas enregistrés dans les WAL. Cela signifie que si votre serveur tombe en panne et que vous ne pouvez pas basculer vers un serveur de secours ou restaurer à partir d'une archive en utilisant par exemple wal-g, vous perdrez cet index jusqu'à ce que vous le reconstruisiez. Avec la sortie de Postgres 10, ils sont désormais enregistrés dans WAL, vous pouvez donc envisager de les utiliser à nouveau, mais la vraie question est : devriez-vous le faire ?
Les index de hachage fournissent parfois des recherches plus rapides que les index B-Tree et sont également rapides à créer. Le plus gros problème est qu'ils sont limités aux seules opérations de comparaison « d'égalité », vous ne pouvez donc les utiliser que pour des recherches de correspondances exactes. Cela rend les index de hachage beaucoup moins flexibles que les index B-Tree couramment utilisés, et vous ne devriez pas les considérer comme un remplacement, mais comme un index pour des cas particuliers.Lequel devriez-vous utiliser ? Nous venons d'en présenter beaucoup. Si vous avez un peu peur, c'est normal. Si vous le savez déjà, CREATE INDEX créera toujours un index pour vous à l'aide d'un B-Tree, et la bonne nouvelle est que les performances de Postgres sont bonnes ou très bonnes pour la plupart des bases de données. :) Si vous envisagez d'utiliser davantage de fonctionnalités de Postgres, voici un aide-mémoire pour l'utilisation d'autres types d'index Postgres :
B-Tree - adapté à la plupart des types de données et requêtes
GIN - pour JSONB/hstore/arrays
GiST - pour la recherche en texte intégral et les types de données géométriques
SP-GiST - adapté aux grands ensembles de données avec des facteurs d'agrégation naturels mais une distribution inégale
BRIN - adapté aux très grands ensembles de données avec ordre séquentiel
Hash - bon pour les opérations d'égalité, mais généralement un index B-Tree suffit toujours.
Si vous avez des questions ou des commentaires sur cet article, n'hésitez pas à rejoindre notre chaîne Slack.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les principales différences entre Centos et Ubuntu sont: l'origine (Centos provient de Red Hat, pour les entreprises; Ubuntu provient de Debian, pour les particuliers), la gestion des packages (Centos utilise Yum, se concentrant sur la stabilité; Ubuntu utilise APT, pour une fréquence de mise à jour élevée), le cycle de support (CentOS fournit 10 ans de soutien, Ubuntu fournit un large soutien de LT tutoriels et documents), utilisations (Centos est biaisé vers les serveurs, Ubuntu convient aux serveurs et aux ordinateurs de bureau), d'autres différences incluent la simplicité de l'installation (Centos est mince)

Centos sera fermé en 2024 parce que sa distribution en amont, Rhel 8, a été fermée. Cette fermeture affectera le système CentOS 8, l'empêchant de continuer à recevoir des mises à jour. Les utilisateurs doivent planifier la migration et les options recommandées incluent CentOS Stream, Almalinux et Rocky Linux pour garder le système en sécurité et stable.

Étapes d'installation de CentOS: Téléchargez l'image ISO et Burn Bootable Media; démarrer et sélectionner la source d'installation; sélectionnez la langue et la disposition du clavier; configurer le réseau; partitionner le disque dur; définir l'horloge système; créer l'utilisateur racine; sélectionnez le progiciel; démarrer l'installation; Redémarrez et démarrez à partir du disque dur une fois l'installation terminée.

La politique de sauvegarde et de récupération de GitLab dans le système CentOS afin d'assurer la sécurité et la récupérabilité des données, Gitlab on CentOS fournit une variété de méthodes de sauvegarde. Cet article introduira plusieurs méthodes de sauvegarde courantes, paramètres de configuration et processus de récupération en détail pour vous aider à établir une stratégie complète de sauvegarde et de récupération de GitLab. 1. MANUEL BACKUP Utilisez le Gitlab-RakegitLab: Backup: Créer la commande pour exécuter la sauvegarde manuelle. Cette commande sauvegarde des informations clés telles que le référentiel Gitlab, la base de données, les utilisateurs, les groupes d'utilisateurs, les clés et les autorisations. Le fichier de sauvegarde par défaut est stocké dans le répertoire / var / opt / gitlab / backups. Vous pouvez modifier / etc / gitlab

Docker utilise les fonctionnalités du noyau Linux pour fournir un environnement de fonctionnement d'application efficace et isolé. Son principe de travail est le suivant: 1. Le miroir est utilisé comme modèle en lecture seule, qui contient tout ce dont vous avez besoin pour exécuter l'application; 2. Le Système de fichiers Union (UnionFS) empile plusieurs systèmes de fichiers, ne stockant que les différences, l'économie d'espace et l'accélération; 3. Le démon gère les miroirs et les conteneurs, et le client les utilise pour l'interaction; 4. Les espaces de noms et les CGROUP implémentent l'isolement des conteneurs et les limitations de ressources; 5. Modes de réseau multiples prennent en charge l'interconnexion du conteneur. Ce n'est qu'en comprenant ces concepts principaux que vous pouvez mieux utiliser Docker.

Comment utiliser Docker Desktop? Docker Desktop est un outil pour exécuter des conteneurs Docker sur les machines locales. Les étapes à utiliser incluent: 1. Installer Docker Desktop; 2. Démarrer Docker Desktop; 3. Créer une image Docker (à l'aide de DockerFile); 4. Build Docker Image (en utilisant Docker Build); 5. Exécuter Docker Container (à l'aide de Docker Run).

Le support de disque dur CentOS est divisé en étapes suivantes: Déterminez le nom du périphérique du disque dur (/ dev / sdx); créer un point de montage (il est recommandé d'utiliser / mnt / newdisk); Exécutez la commande Mount (mont / dev / sdx1 / mnt / newdisk); modifier le fichier / etc / fstab pour ajouter une configuration de montage permanent; Utilisez la commande umount pour désinstaller l'appareil pour vous assurer qu'aucun processus n'utilise l'appareil.

Une fois CentOS arrêté, les utilisateurs peuvent prendre les mesures suivantes pour y faire face: sélectionnez une distribution compatible: comme Almalinux, Rocky Linux et CentOS Stream. Migrez vers les distributions commerciales: telles que Red Hat Enterprise Linux, Oracle Linux. Passez à Centos 9 Stream: Rolling Distribution, fournissant les dernières technologies. Sélectionnez d'autres distributions Linux: comme Ubuntu, Debian. Évaluez d'autres options telles que les conteneurs, les machines virtuelles ou les plates-formes cloud.
