Maison  >  Article  >  Java  >  Explication détaillée du niveau d'isolement des transactions Spring

Explication détaillée du niveau d'isolement des transactions Spring

黄舟
黄舟original
2017-03-03 10:18:451501parcourir

Il existe 5 niveaux d'isolement de transactions différents définis au printemps :
1 ISOLATION_DEFAULT (Généralement, vous pouvez utiliser cette configuration) ;

Il s'agit d'un niveau d'isolement par défaut de PlatfromTransactionManager, utilisez la base de donnéesniveau d'isolation des transactions par défaut.
2. ISOLATION_READ_UNCOMMITTED 4 p" L. I'F; k1 {) a. D( E5 ?: V
C'est le niveau d'isolement le plus bas pour une transaction, qui permet une autre transaction Vous peut voir les données non validées de cette transaction. Ce niveau d'isolement produira des lectures sales, des lectures non répétables et des lectures fantômes
Cette situation ne se produira pas avec le niveau d'isolement des transactions par défaut de la plupart des bases de données) 1. G7 Une autre transaction ne peut pas lire les données non validées de cette transaction. Ce niveau d'isolement des transactions peut éviter les lectures incorrectes, mais des lectures non répétables et des lectures fantômes peuvent se produire.  : U8 m# n8 g1 k( E : N

Qu'est-ce qu'une lecture sale ? (causée par une modification et un désengagement)
Par exemple : Zhang San le salaire est de 5 000, la transaction A change son salaire à 8 000, mais la transaction A n'a pas encore été soumise. En même temps, la transaction B lit le salaire de Zhang San et indique que le salaire de Zhang San est de 8 000. Ensuite, une exception se produit dans la transaction. A. , et la transaction a été annulée. Le salaire de Zhang San a été ramené à 5 000. Enfin, les données du salaire de Zhang San de 8 000 lues par la transaction B sont des données sales, et la transaction B a fait une lecture sale, B j d ! # i) s$ i
(Cette situation ne se produira pas avec le niveau d'isolation des transactions par défaut de la plupart des bases de données)
; N$ ~" J7 a& Y* ?/ G8 I 4. ISOLATION_REPEATABLE_READ
Ce niveau d'isolement des transactions peut empêcher les lectures sales et les lectures non répétables, mais des lectures fantômes peuvent se produire 3 [* {- F2 s w |
Qu'est-ce qu'un non-. lecture répétable ? (
Modification provoquée par ) 6 h2 E% J, S7 f9 n m0 U4 ]" ?% e. a
Par exemple : / ^7 Y# T6 |& Z' BDans la transaction A, il est lu que le salaire de Zhang San est de 5000. L'opération n'est pas terminée et la transaction n'a pas encore été soumise.
5 K : N6 c" [$ p : J4 L/ I" BDans le même temps, la transaction B a modifié le salaire de Zhang San à 8 000 et a soumis la transaction. Par la suite, dans la transaction A, le salaire de Zhang San est relu et le salaire devient 8 000. Les résultats de deux lectures dans une transaction sont incohérents, ce qui entraîne des lectures non répétables.
(Cette situation ne se produira pas avec le niveau d'isolement des transactions par défaut de la plupart des bases de données) h U! y9 {) }1 R8 ~% B, l
5. >Il s'agit du niveau d'isolation des transactions le plus coûteux mais le plus fiable. Les transactions sont traitées comme une exécution séquentielle. En plus d'éviter les lectures incorrectes et les lectures non répétables, les lectures fantômes sont également évitées.
% c0 @8 E& g" x1 . |9 w9 N ~Par exemple :
A compte actuellement 10 employés avec un salaire de 5 000. La transaction A lit les 10 employés avec un salaire de 5 000. À ce moment-là, la transaction B insère un salaire, c'est également un enregistrement de 5 000. C'est à ce moment-là que la transaction A lit l'employé dont le salaire est de 5 000, et l'enregistrement est de 11 personnes
Cette situation se produira par défaut. niveau d'isolation des transactions de la plupart des bases de données. Ce niveau d'isolation des transactions apportera des verrous au niveau de la table) _! Le niveau de la base de données a été garanti. Évitez les lectures sales et les lectures non répétables. Cependant, les lectures fantômes nécessitent des verrous au niveau de la table. Le niveau d'isolation des transactions ISOLATION_SERIALIZABLE doit être utilisé avec précaution dans les verrous au niveau de la table par défaut d'Oracle. , ce qui a un impact énorme sur les performances. Généralement, s'il n'y a pas de besoin particulier, configurez-le simplement pour utiliser le niveau d'isolation des transactions par défaut de la base de données
Ce qui précède est une explication détaillée du niveau d'isolation des transactions Spring, et plus encore. Pour le contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn)

.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn