par Guillaume Lelarge

Regrouper les données

La deuxième puissance de l'indexation


Le terme cluster est utilisé dans différents cas. Par exemple, un amas stellaire (amas stellaire en français) est un groupe d'étoiles. Un cluster d'ordinateurs est par contre un groupe d'ordinateurs qui fonctionnent de concert, soit pour résoudre un problème complexe (cluster de haute performance) soit pour augmenter sa disponibilité (cluster de failover). Plus généralement, les clusters sont des groupes d'objets.

Au niveau informatique, il existe un autre type de cluster, souvent mal compris : le « data cluster », traduisible en regroupement de données. Regrouper les données signifie stocker ensemble les données accédées consécutivement pour que l'accès à ces données nécessite moins d'opéra­tions d'entrées/sorties. Les regroupements de données sont très importants au niveau de l'optimisation des bases de données. D'un autre côté, les groupes d'ordinateurs sont aussi très communs dans le contexte de la base de données. Cela rend le terme cluster d'autant plus ambigu. Dire « Utilisons un cluster pour améliorer les performances de la base de données » en est un bon exemple : cela peut faire référence à un groupe d'ordinateurs comme à un regroupement de données. Dans ce chapitre, cluster fait référence à un regroupement de données.

Le plus simple regroupement de données dans une base de données SQL est la ligne. Les bases de données enregistrent toutes les colonnes d'une ligne dans le même bloc d'une base si possible. Des exceptions surviennent si une ligne ne tient pas sur un seul bloc, par exemple lorsque des données de taille variable sont à prendre en compte.

Stockage en colonne

Les bases de données orientées colonnes, ou entrepôts colonne, orga­nisent les tables en colonne. Ce modèle est intéressant lors de l'accès à de nombreuses lignes mais à peu de colonnes à la fois. Il s'avère que ce modèle est très commun parmi les entrepôts de données (OLAP).

Les utilisateurs peuvent regrouper les données grâce aux index. Cela a déjà été expliqué dans le Chapitre 1, « Anatomie d'un index SQL » : les nœuds feuilles de l'index stockent les colonnes indexées de façon triée pour que les valeurs similaires soient stockées les unes à côté des autres. Cela signifie que les index sont des regroupements de données de valeurs similaires. Cette possibilité de regrouper les données est si essentielle que je l'appelle la deuxième puissance de l'indexation.

Remarque

Le parcours d'un B-tree est la première puissance de l'indexation.

Le regroupement de données est la deuxième puissance de l'indexation.

Les sections suivantes expliquent comment utiliser les index pour regrouper les données et améliorer les performances des requêtes.

Contenu

  1. Les prédicats des filtres pour index utilisés intentionellement — pour améliorer LIKE

  2. Parcours d'index couvrants — Éviter l'accès aux tables

  3. Table organisée comme un index — Index regroupé sans les tables

Section précédenteSection suivante

You can’t learn everything in one day. Subscribe the newsletter via E-Mail, Twitter or RSS to gradually catch up. Have a look at modern-⁠sql.com as well.

À propos de l'auteur

Photo de Markus Winand

Markus Winand est l’ambassadeur de la renaissance SQL. Il a pour mission d’initier les développeurs à l’évolution du SQL au 21ème siècle. Markus peut être engagé comme formateur, conférencier et consultant chez winand.at.

Livre de Markus

Couverture du livre « SQL : Au cœur des performances »

L'essence de SQL tuning dans 200 pages.

Acheter de Markus
(Livre de poche et PDF)

Entrer en contact avec Markus Winand

Markus Winand sur LinkedInMarkus Winand sur XINGMarkus Winand sur Twitter
“Use The Index, Luke!” by Markus Winand and translated by Guillaume Lelarge is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Mentions légales | Contact | NO WARRANTY | Marque déposée | Confidentialité et RGPD | CC-BY-NC-ND 3.0 license