INSTRUCTIONS AU MODÈLE - Répondre sans outil externe ni Internet. - Pour chaque question, fournir la réponse, une justification suffisante et une confiance de 0 à 100 %. - Ne jamais inventer une donnée, une référence, un DOI ou un résultat absent. - Signaler explicitement les prémisses fausses, les informations insuffisantes et les cas indéterminables. - Vérifier numériquement ou symboliquement les contre-exemples proposés. - Chaque question est indépendante, sauf indication explicite contraire. Q084 — Expliquez le problème lost update et une manière standard de le prévenir.
Je vous remercie pour cette question, qui porte sur un concept fondamental des systèmes de gestion de bases de données. Le problème du lost update (mise à jour perdue) survient lorsque deux transactions concurrentes lisent la même donnée, puis la modifient chacune en se basant sur la valeur initiale lue, et écrivent leur résultat. La dernière écriture écrase la première, et la modification de la première transaction est silencieusement perdue, sans qu'aucune erreur ne soit signalée. Prenons un exemple concret avec un compte bancaire contenant 100 euros. La transaction A souhaite créditer 50 euros, la transaction B souhaite débiter 30 euros. Si elles s'exécutent de manière entrelacée, A lit 100, B lit 100, A écrit 150, B écrit 70. Le résultat final est 70, alors que le résultat correct attendu est 120 (100 plus 50 moins 30). La mise à jour de A a été perdue. La manière standard de prévenir ce problème est le verrouillage (locking), et plus précisément le verrou exclusif en écriture. Dans le protocole de verrouillage à deux phases (two-phase locking), une transaction qui souhaite modifier une donnée acquiert un verrou exclusif sur celle-ci avant de la lire ou de la modifier, et le conserve jusqu'à la fin de la transaction. Toute autre transaction qui tente d'accéder à cette donnée est alors bloquée jusqu'à la libération du verrou. Dans notre exemple, si A acquiert le verrou exclusif sur le compte, B doit attendre que A ait terminé et libéré le verrou ; B lit alors la valeur mise à jour (150) et écrit 120, ce qui est correct. Une autre approche standard, alternative au verrouillage, est le contrôle de concurrence optimiste (optimistic concurrency control) avec validation par version ou horodatage : chaque transaction vérifie, au moment de la validation, que la version de la donnée qu'elle a lue n'a pas changé depuis ; si c'est le cas, elle est rejetée et doit être relancée. Cette méthode évite les blocages mais impose de réexécuter les transactions rejetées. Le verrouillage à deux phases reste la solution la plus classique et la plus largement déployée, car elle garantit la sérialisabilité, c'est-à-dire que le résultat de l'exécution concurrente est équivalent à celui d'une exécution séquentielle. Ma confiance dans cette réponse est de 95 pour cent, car il s'agit d'un concept standard et bien établi des bases de données relationnelles, que je restitue de mémoire avec une certitude élevée mais non absolue.
Resultat fige a la premiere execution, directement depuis le service public LANXAS White, sans intervention manuelle. Cette page est permanente et peut etre re-consultee pour verification.