Si vous devez modifier un grand volume de données de table sans verrouiller celle-ci, utilisez la fonctionnalité Lockless Change dans Data Management (DMS). Cette fonctionnalité divise une instruction SQL unique en plusieurs lots d'exécution, ce qui permet de modifier les données sans verrouillage et réduit l'impact des opérations DML sur les performances et l'espace de la base de données. Cette rubrique explique comment effectuer des modifications de données sans verrou dans DMS.
Prérequis
-
Types de bases de données pris 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) L'instance doit être configurée en mode de contrôle Stable Change ou Security Collaboration. Pour plus d'informations, consultez Afficher le mode de contrôle d'une instance.
Limitations
Seules les instructions UPDATE, DELETE et INSERT...SELECT sont prises en charge.
UPDATE et DELETE
| Contrainte | Détails |
|---|---|
| Portée 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 une pagination manuelle force une analyse complète de la table, ce qui provoque le verrouillage que cette fonctionnalité vise précisément à éviter |
INSERT...SELECT
| Contrainte | Détails |
|---|---|
| Portée de 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 |
Instructions
Lisez le contenu anglais pour comprendre CE qui doit être communiqué
Rédigez le français À PARTIR DE ZÉRO — oubliez la structure de phrase anglaise
Conservez exactement tout le formatage markdown, les blocs de code, les liens et les images
Balises xref (
<a data-tag="xref" ...>texte</a>) — conservez la balise ENTIERE avec tous ses attributs dans l'ordre et la casse d'origine, traduisez UNIQUEMENT le texte visible entre > etAppliquez strictement toutes les règles linguistiques spécifiques
Appliquez les règles de stopwords avec une tolérance zéro
Utilisez le mode impératif dans les étapes numérotées et les listes à puces procédurales
Assurez la cohérence terminologique — même terme = même traduction partout
Variez les amorces de phrase dans les listes/tableaux — aucune amorce répétée 3 fois ou plus
-
Renvoyez UNIQUEMENT le document markdown français, sans explication
Procédure
Connectez-vous à DMS 5.0.
-
Dans la barre de navigation supérieure, choisissez .
RemarqueSi vous utilisez la console DMS en mode simple, cliquez sur l'icône
dans le coin supérieur gauche. Dans le volet de navigation qui s'affiche, choisissez . -
Configurez les paramètres du Lockless Change ticket et cliquez sur Submit. Le tableau suivant décrit certains des paramètres.
RemarqueCet exemple illustre la configuration d'une instance en mode Security Collaboration. Pour les instances en mode Flexible Management ou Stable Change, il vous suffit de configurer les paramètres Database et SQL statements for change.
Parameter
Required
Description
Database
Yes
Recherchez et sélectionnez la base de données cible.
RemarqueVous devez disposer des autorisations nécessaires pour modifier les données de la base de données cible. Pour plus d'informations, consultez View your permissions.
Business Background
No
Fournissez un contexte pour la modification afin de réduire la charge de communication.
Execution Method
Yes
Sélectionnez une méthode d'exécution pour le ticket :
-
Après approbation, le demandeur exécute l'opération.
-
Exécution automatique après approbation.
-
Exécution par le dernier approbateur.
RemarqueLes administrateurs peuvent modifier la liste des méthodes d'exécution dans la section . Pour plus d'informations, consultez Configuration management.
Affected rows
Yes
Estimez le nombre de lignes affectées. Vous pouvez exécuter une requête
COUNTdans la SQL Console pour obtenir ce chiffre.RemarqueSi des données sont écrites en continu dans la table, comptez uniquement le nombre de lignes de données existantes.
SQL Statements for Change
Yes
Saisissez les instructions DML, telles que
UPDATE,DELETEouINSERT_SELECT.RemarqueSi vous saisissez des instructions DDL, vous effectuez une tâche de modification de schéma sans verrou DDL. Pour plus d'informations, consultez Perform a lock-free schema change by using a Lockless Change ticket.
SQL Statements for Rollback
No
Un script inverse pour les instructions figurant dans SQL statements for change. Le script doit être exécutable.
SQL Text
No
Ce paramètre n'apparaît que si vous sélectionnez Text pour le paramètre Rollback SQL. Saisissez les instructions SQL de restauration, qui sont l'inverse des instructions SQL de modification.
Attachment
No
Ce paramètre n'apparaît que si vous sélectionnez Attachment pour le paramètre SQL Statements for Rollback. Cliquez sur File pour télécharger la pièce jointe SQL de restauration.
RemarqueLa pièce jointe peut être un fichier .txt, .zip ou .sql. La taille maximale du fichier est de 15 Mo.
Change Stakeholder
No
Les parties prenantes spécifiées peuvent consulter le ticket et collaborer dessus. Les non-parties prenantes (à l'exception des administrateurs et des DBA) ne peuvent pas le voir.
Attachments
No
Téléchargez des pièces jointes pour fournir plus de contexte pour ce ticket.
-
-
Une fois le ticket soumis, vous pouvez activer la vérification de la latence entre le nœud primaire et le nœud secondaire, définir un seuil et modifier les instructions SQL.
-
(Facultatif) Activez la vérification de la latence entre le nœud primaire et le nœud secondaire et définissez un seuil. Cela permet d'éviter qu'une latence excessive n'affecte les basculements d'instance.
Dans la section Basic Information, cliquez sur chunk option et définissez un seuil de latence raisonnable entre le nœud primaire et le nœud secondaire, exprimé en secondes. Si la latence dépasse ce seuil, l'exécution SQL est interrompue.
RemarqueCette fonctionnalité est actuellement disponible uniquement pour les bases de données ApsaraDB RDS for MySQL.
-
(Facultatif) Modifiez les instructions SQL.
Après avoir soumis la demande, le système effectue automatiquement une pré-vérification des instructions SQL. Si la pré-vérification échoue, vous pouvez cliquer sur Edit SQL, modifier les instructions en fonction de la raison de l'échec, puis réessayer.
-
Cliquez sur Submit. Les tickets pour les instances en mode Security Collaboration nécessitent une approbation basée sur les règles configurées, tandis que les tickets pour les instances en mode Stable Change sont approuvés automatiquement.
-
Une fois le ticket approuvé, cliquez sur Execute Change dans la section Execute de la page de détails du ticket.
RemarqueVous pouvez consulter la progression de l'approbation dans la section Approval de la page de détails du ticket.
-
Configurez les paramètres d'exécution de la tâche.
Configuration Item
Description
Execution Strategy
Running immediately : option par défaut. La tâche est exécutée immédiatement après avoir cliqué sur Confirm Execution.
Schedule : sélectionnez une heure de début pour la tâche. Après avoir cliqué sur Confirm Execution, la tâche s'exécute à l'heure spécifiée.
RemarqueL'heure d'exécution réelle d'une tâche planifiée peut présenter une marge d'erreur de ±1 minute.
Specify End Time
Spécifiez une heure de fin pour la tâche. Si la tâche n'est pas terminée à l'heure de fin spécifiée, le système arrête l'exécution des tâches SQL restantes. Cela empêche les tâches de s'exécuter pendant les heures de pointe et d'affecter les opérations commerciales.
RemarqueL'heure de fin réelle de la tâche peut présenter une marge d'erreur de ±1 minute.
Primary/Secondary Node Check
L'activation de cette vérification garantit la synchronisation des données en temps réel entre les instances primaires et secondaires, une haute disponibilité et une récupération rapide en cas de panne.
Canary Release Type
La politique d'exécution des instructions SQL par lots.
No Canary Release : DMS exécute automatiquement toutes les instructions SQL de la tâche.
Suspend after Executing the First SQL Statement : après l'exécution réussie de la première instruction SQL, DMS met automatiquement la tâche en pause. Pour continuer, cliquez sur Retry. Les instructions SQL restantes sont ensuite exécutées en une seule fois sans autres pauses.
Suspend after Executing a SQL Statement : la tâche se met en pause automatiquement après chaque exécution d'instruction SQL. Vous devez cliquer manuellement sur Retry pour exécuter l'instruction SQL suivante.
-
Cliquez sur Confirm Execution.
RemarqueLorsqu'une tâche en pause est redémarrée, elle reprend depuis le début.
Dans la section Execute, vous pouvez afficher l'état d'exécution de la tâche, les paramètres de la tâche, les détails et les Scheduling Logs.
Documents connexes
-
Après avoir effectué une modification des données sans verrou, vous devrez peut-être également réaliser les opérations suivantes :
Interroger les données de la table dans la fenêtre SQL. Pour plus d'informations, consultez la rubrique Interroger des données.
Exporter des données depuis votre base de données. Pour plus d'informations, consultez la rubrique Exportation de base de données.
Exporter des ensembles de résultats SQL. Pour plus d'informations, consultez la rubrique Exporter des ensembles de résultats SQL.
-
Les opérations API suivantes sont liées aux modifications de données sans verrou :
FAQ
-
Q : La fonctionnalité de modification des données sans verrou prend-elle en charge les opérations SQL complexes ?
R : Non. Par exemple, elle ne prend pas en charge l'instruction
CREATE_INDEXni les opérations sur plusieurs tables, telles qu'une instructionDELETEincluant une clauseJOIN. Pour plus d'informations sur les types SQL pris en charge, consultez la rubrique Limites. -
Q : DMS Lockless Change détecte-t-il les verrous de table et les blocages ?
R : Lorsque DMS effectue une modification des données sans verrou, il divise les instructions SQL volumineuses en petits lots et marque une pause après chaque lot. Cela permet d'éviter l'occupation prolongée des ressources. Pendant l'exécution, DMS n'effectue pas de détection préalable des verrous de ligne. MySQL verrouille toujours les lignes modifiées. L'impact global est minime grâce à la taille réduite des lots et aux pauses, mais cela ne garantit pas que la table ne sera pas verrouillée. Pour une modification de schéma sans verrou, DMS utilise une table temporaire pour simuler votre instruction DDL. Cette étape permet de vérifier au préalable si l'opération entraînera un verrouillage ou un blocage de la table. Si la vérification indique que l'opération verrouillera la table, celle-ci échoue et un message s'affiche.
-
Q : Est-il possible d'ajuster la vérification par relecture incrémentielle pour une tâche DMS Lockless Change ?
R : Oui. Tout d'abord, accédez à la page , recherchez et activez la fonctionnalité « Allow adjustment of the playback data verification ratio for lockless change results ».
Accédez au ticket DDL correspondant dans la console.
Dans la section d'exécution, cliquez sur Details.
Recherchez le script correspondant et cliquez sur Execution Progress.
Le taux de vérification s'affiche en bas de page. Ajustez ce taux selon vos besoins. L'unité est le pour mille (‰).