Qu'est-ce que le niveau d'isolement «Chaos» et quand doit-il être utilisé?


26

La documentation ADO.NET montre la possibilité de définir le niveau de transaction pour une transaction SQL sur Chaos. Cela semble désagréable, mais si la fonctionnalité est là, elle a probablement une utilisation légitime.

La commande SET TRANSACTION ISOLATION LEVEL dans BOL (ah! Voyez, je peux utiliser google et BOL) rien ne semble être nommé "chaos" et ADO.NET a 5 modes qui correspondent bien aux niveaux documentés en plus de "chaos"

À quoi ou à qui s'adresse ce niveau de chaos? (Et pourquoi a-t-il un nom hostile?)

Réfs: l' énumération ADO.NET

Réponses:


11

Selon la documentation DB2, il s'agit d'un niveau d'isolement étrange, où les modifications sont validées dans la base de données dès que vous les exécutez (pour que les autres les voient).

Il n'est pas dit explicitement, mais, pour autant que je sache, il n'y a pas de retour en arrière non plus. Fondamentalement, cela signifie aucune transaction . "Vous dites" transaction ", mais je m'en fiche vraiment". Ainsi -> chaos.

En fait, j'ai trouvé dans une liste d'e-mails que "Chaos" correspond en fait au niveau de transaction "* NONE" dans "DB2 for i".


Le chaos est une isolation de degré 0, comme l'expliquent Reuter et Gray dans leur théorie du traitement transactionnel. Si vous pensez que Read Uncommitted est vraiment lié à l'isolement des données en cours de lecture (et n'est d'ailleurs pas la même chose que le chaos). Le chaos (comme tout autre degré d'isolement) possède de nombreuses propriétés, dont l'une des plus intéressantes est sa capacité à violer le degré 3 (lecture répétable sérialisable). L'essentiel est que Chaos ne doit être utilisé que dans le bon contexte (c'est-à-dire que je suggère de ne fonctionner que dans l'isolement complet pour les ensembles de données qui ne nécessitent pas de restauration).
Mark Broadbent


7

DB2 a un niveau d'isolement des transactions appelé "Chaos":

Propriété DB2Connection.ConnectionString - IBM Knowledge Center

Peut-être qu'il est destiné à être utilisé pour cela. Je ne suis vraiment pas sûr, mais je suppose que cela signifie qu'il n'y a pas d'isolement de transaction définissable.


2
Semble être pour le système i uniquement. Savez-vous ce que ça veut dire? Je ne trouve pas beaucoup d'informations à ce sujet, il ne dit aucun commit donc je suppose que cela signifie que chaque déclaration est validée instantanément. Mais cela semble orthogonal au niveau d'isolement, il y a donc probablement autre chose
Lennart
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.