Communauté RSS DEV

Les mécanismes de SELECT FOR UPDATE en SQL

SELECT FOR UPDATE est un mécanisme de verrouillage au niveau des lignes dans SQL utilisé pour verrouiller les lignes récupérées dans une transaction, empêchant d'autres transactions de modifier ou d'acquérir des verrous sur ces lignes. Son objectif est d'assurer la cohérence des données, couramment utilisé dans les scénarios où l'intégrité des données doit être maintenue. Dans MySQL, la mise en œuvre de SELECT FOR UPDATE est étroitement liée au moteur de stockage, tel que InnoDB, qui utilise des verrous de ligne pour verrouiller les lignes cibles. Ce mécanisme de verrouillage place des verrous exclusifs sur les lignes récupérées par la requête, empêchant d'autres transactions de modifier ces lignes ou de placer des verrous partagés ou exclusifs sur elles. SELECT FOR UPDATE doit être utilisé à l'intérieur d'une transaction et n'est efficace que lors de l'utilisation d'un moteur de stockage qui prend en charge les transactions. Si les lignes cibles sont déjà verrouillées par une autre transaction, la transaction actuelle entrera dans un état d'attente jusqu'à ce que le verrou soit libéré ou qu'une limite de temps soit atteinte. Le moteur de stockage InnoDB met en œuvre le verrouillage au niveau des lignes via les index, et SELECT FOR UPDATE verrouille toutes les lignes qui répondent à la condition de requête. Le processus de verrouillage implique de placer un verrou exclusif sur chaque ligne scannée, et si une ligne est déjà verrouillée par une autre transaction, la transaction actuelle attend jusqu'à ce que ce verrou soit libéré. L'utilisation des index est cruciale pour optimiser SELECT FOR UPDATE, car les requêtes qui utilisent des index appliqueront des verrous au niveau des lignes, évitant la dégradation vers des verrous au niveau de la table.
favicon
dev.to
The Mechanics of SELECT FOR UPDATE in SQL
Image illustrant l'article : Les mécanismes de SELECT FOR UPDATE en SQL