Tous les produits
Search
Centre de documentation

PolarDB:Partitionnement courant des tables

Dernière mise à jour :Aug 11, 2026

Le partitionnement courant des tables dans PolarDB-X répartit automatiquement l'ensemble des tables d'une base de données logique sur plusieurs nœuds de données (DN). Ce mécanisme élimine les goulots d'étranglement liés aux ressources d'un serveur unique et équilibre la charge de stockage ainsi que les requêtes à travers le cluster.

Activez cette fonctionnalité en définissant DEFAULT_SINGLE='on' lors de la création d'une base de données en mode AUTO.

Fonctionnement

PolarDB-X détermine la distribution de chaque table selon qu'une définition de partition MySQL est spécifiée ou non au moment de sa création :

Type de table Définition de partition Comportement de distribution
Non partitionnée Non spécifiée Répartition aléatoire sur les DN pour équilibrer les charges
Partitionnée Spécifiée explicitement Répartition uniforme sur les DN
Remarque

Les tables non partitionnées étant attribuées aléatoirement, le volume de données par shard peut varier. Par conséquent, l'espace de stockage utilisé sur chaque DN est susceptible de différer.

Cas d'usage

Le partitionnement courant des tables est particulièrement adapté lorsque :

  • Votre application exploite un grand nombre de bases de données et de tables.

  • La majorité des tables entretiennent peu ou aucune relation JOIN entre elles.

Si vos tables nécessitent des JOIN fréquents entre elles, consultez la section Limitations avant d'activer cette fonctionnalité.

Créer une base de données avec partitionnement courant des tables

Pour activer le partitionnement courant des tables, créez une base de données en mode AUTO avec le paramètre DEFAULT_SINGLE='on' :

CREATE DATABASE autodb1 MODE='auto' DEFAULT_SINGLE='on';
Remarque

Lorsque vous créez une base de données en mode AUTO depuis la console PolarDB, l'instruction SQL générée par le système n'inclut pas DEFAULT_SINGLE='on'. Pour utiliser le partitionnement courant des tables, exécutez manuellement la commande ci-dessus. Pour plus de détails, reportez-vous à CREATE DATABASE.

Paramètres de création de la base de données

Paramètre Description Valeur
MODE Définit le mode de la base de données. Obligatoire pour un fonctionnement distribué. 'auto'
DEFAULT_SINGLE Active le partitionnement courant des tables. Si ce paramètre est réglé sur 'on', toutes les tables sans définition de partition explicite sont automatiquement distribuées sur les DN. 'on' (activation)

Vérifiez que la base de données a été créée correctement :

mysql> SHOW CREATE DATABASE autodb1;

Résultat attendu :

+----------+------------------------------------------------------------------------------------------------------------------+
| DATABASE | CREATE DATABASE                                                                                                  |
+----------+------------------------------------------------------------------------------------------------------------------+
| autodb1  | CREATE DATABASE `autodb1` CHARSET = `utf8mb4` COLLATE = `utf8mb4_general_ci` MODE = 'auto' DEFAULT_SINGLE = 'on' |
+----------+------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

Créer des tables non partitionnées

Créez des tables dans autodb1 sans spécifier de schéma de partitionnement. PolarDB-X se charge alors de les partitionner et de les distribuer automatiquement sur les DN.

CREATE TABLE sin_t1(
  id bigint not null auto_increment,
  bid int,
  name varchar(30),
  birthday datetime,
  primary key(id)
);

CREATE TABLE sin_t2(
  id bigint not null auto_increment,
  bid int,
  name varchar(30),
  birthday datetime,
  primary key(id)
);

CREATE TABLE sin_t3(
  id bigint not null auto_increment,
  bid int,
  name varchar(30),
  birthday datetime,
  primary key(id)
);

CREATE TABLE sin_t4(
  id bigint not null auto_increment,
  bid int,
  name varchar(30),
  birthday datetime,
  primary key(id)
);

Vérifier la distribution des tables

Utilisez la commande SHOW TOPOLOGY FROM <table_name> pour identifier le DN auquel chaque table a été assignée.

sin_t1 :

SHOW TOPOLOGY FROM sin_t1\G
           ID: 0
   GROUP_NAME: AUTODB1_P00000_GROUP
   TABLE_NAME: sin_t1_HnMx
PARTITION_NAME: p1
SUBPARTITION_NAME:
  PHY_DB_NAME: autodb1_p00000
       DN_ID: polardbx-storage-0-master
STORAGE_POOL_NAME: _default

sin_t2 :

SHOW TOPOLOGY FROM sin_t2\G
           ID: 0
   GROUP_NAME: AUTODB1_P00001_GROUP
   TABLE_NAME: sin_t2_IT7l
PARTITION_NAME: p1
SUBPARTITION_NAME:
  PHY_DB_NAME: autodb1_p00001
       DN_ID: polardbx-storage-1-master
STORAGE_POOL_NAME: _default

sin_t3 :

SHOW TOPOLOGY FROM sin_t3\G
           ID: 0
   GROUP_NAME: AUTODB1_P00000_GROUP
   TABLE_NAME: sin_t3_HmtN
PARTITION_NAME: p1
SUBPARTITION_NAME:
  PHY_DB_NAME: autodb1_p00000
       DN_ID: polardbx-storage-0-master
STORAGE_POOL_NAME: _default

sin_t4 :

SHOW TOPOLOGY FROM sin_t4\G
           ID: 0
   GROUP_NAME: AUTODB1_P00001_GROUP
   TABLE_NAME: sin_t4_ab7e
PARTITION_NAME: p1
SUBPARTITION_NAME:
  PHY_DB_NAME: autodb1_p00001
       DN_ID: polardbx-storage-1-master
STORAGE_POOL_NAME: _default

Ces résultats confirment que PolarDB-X a réparti les quatre tables sur deux DN : sin_t1 et sin_t3 se trouvent sur polardbx-storage-0-master, tandis que sin_t2 et sin_t4 résident sur polardbx-storage-1-master.

Limitations

Performances des JOIN

Avec le partitionnement courant des tables, les opérations JOIN impliquant des tables partitionnées peuvent s'avérer plus lentes. Étant donné que les données sont dispersées sur différents DN, il n'est plus toujours possible de déléguer efficacement l'exécution des JOIN aux DN individuels.

Pour atténuer cet impact, privilégiez le partitionnement courant pour les tables ayant peu ou pas de relations JOIN.

Distribution inégale du stockage

La distribution aléatoire des tables non partitionnées entraîne une variation du volume de données par shard. De ce fait, l'espace de stockage consommé sur chaque DN peut présenter des disparités.