Tous les produits
Search
Centre de documentation

Data Management:Overview

Dernière mise à jour :Aug 09, 2026

Le langage de manipulation des données (DML) sans verrouillage dans Data Management (DMS) permet d'exécuter des instructions UPDATE, DELETE et INSERT...SELECT sur de grands ensembles de données sans verrouiller les tables ni dégrader les performances de la base de données. Le moteur DMS divise automatiquement les données cibles en lots et exécute l'instruction lot par lot, en marquant une brève pause entre chaque lot pour protéger la réplication du primaire vers le secondaire et réduire la charge de la base de données.

Contexte

À mesure que le volume de données métier augmente, il devient souvent nécessaire de supprimer des données historiques ou de mettre à jour de grandes parties d'une table. Deux approches courantes comportent toutes deux des risques importants :

  • Écriture d'un script de division des données : L'utilisation de la clause LIMIT pour paginer les suppressions ou les mises à jour est une erreur fréquente. Étant donné que LIMIT sans analyse d'index impose une analyse complète de la table, celle-ci peut toujours être verrouillée. Même si la division est correctement implémentée, un intervalle de lot mal réglé peut entraîner un retard de réplication sévère entre les bases de données primaires et secondaires.

  • Extraction manuelle par l'administrateur de base de données : La division manuelle de grands ensembles de données prend du temps, est sujette aux erreurs et difficile à ajuster une fois lancée.

Outre les risques mentionnés ci-dessus, deux autres modes de défaillance peuvent survenir lors d'opérations directes sur de grandes tables :

  • Une seule instruction SQL affectant trop de lignes peut entraîner le dépassement de la limite supérieure du nombre d'entrées de journal, ce qui provoque l'échec total de l'instruction.

  • L'exécution d'une instruction SQL sans utiliser les index spécifiés peut provoquer un verrouillage de la table, augmenter la charge de la base de données et, dans les cas graves, entraîner des pannes métier.

Le DML sans verrouillage élimine ces deux risques en automatisant la division en lots et la limitation du débit au sein de DMS.

Fonctionnement

Le DML sans verrouillage traite une seule instruction SQL en trois étapes :

  1. Division des données — Le moteur DMS analyse l'instruction et divise les lignes correspondantes en plusieurs lots basés sur des plages d'index, évitant ainsi les analyses complètes de la table.

  2. Exécution par lots — DMS exécute l'instruction sur un lot à la fois, en ne maintenant que des verrous de courte durée au niveau des lignes pendant chaque lot.

  3. Intervalle de tampon — Après l'achèvement de chaque lot, DMS attend brièvement avant de démarrer le lot suivant. Cet intervalle permet à la base de données secondaire de rattraper la réplication, maintenant le retard de réplication du primaire vers le secondaire dans des limites acceptables.

Avantages

  • Votre activité n'est pas impactée lors des opérations de modification de données volumineuses.

  • L'impact sur les performances de la base de données et sur le stockage est réduit.

  • L'efficacité d'exécution est garantie même pour de grandes quantités de modifications de données.

Bases de données prises en charge

Moteur de base de données Instances prises en charge
MySQL ApsaraDB RDS for MySQL, PolarDB for MySQL, MyBase for MySQL, PolarDB for Xscale, bases de données MySQL tierces
PostgreSQL ApsaraDB RDS for PostgreSQL, PolarDB for PostgreSQL, MyBase for PostgreSQL, bases de données PostgreSQL tierces
MariaDB ApsaraDB for MariaDB, bases de données MariaDB tierces
OceanBase ApsaraDB for OceanBase en mode MySQL
Compatible Oracle PolarDB for PostgreSQL (Compatible with Oracle)

Limites

Seules les instructions UPDATE, DELETE et INSERT...SELECT sont prises en charge.

UPDATE et DELETE

Contrainte Détails
Étendue de la table Table unique uniquement
Clause WHERE Obligatoire. Pour mettre à jour ou supprimer toutes les lignes, utilisez WHERE 1=1
Sous-requêtes Non prises en charge
Clause LIMIT Non prise en charge — l'utilisation de LIMIT pour la pagination manuelle impose une analyse complète de la table, ce qui provoque le verrouillage que cette fonctionnalité vise à éviter

INSERT...SELECT

Contrainte Détails
Étendue SELECT Table unique uniquement
Clause WHERE Obligatoire dans la clause SELECT. Pour sélectionner toutes les lignes, utilisez WHERE 1=1
Clauses interdites Les clauses LIMIT, ORDER BY et GROUP BY ne sont pas prises en charge dans la clause SELECT

Cas d'utilisation

  • Suppression des données historiques — Supprimez les lignes qui ne sont plus nécessaires sans bloquer les lectures ou les écritures sur la table de production.

  • Mise à jour de toutes les lignes — Appliquez une mise à jour de colonne sur l'ensemble d'une table sans provoquer de retard de réplication ni d'interruption de service.

Étapes suivantes