transaction de mise à jour ne bloque pas l'exécution de sélection

Le temps peut MS SQL Server est relativement longue, la formation d'une compréhension profonde: dans la DB, si deux opérations parallèles ont lieu, une opération de mise à jour peut bloquer l'exécution sélectionner une autre transaction.

Maintenant, principalement utilisé mysql, la compréhension ou précédemment formé. Dans l'application fait, l'émergence d'un phénomène: une requête de rapport toujours sans conditions, les délais d'attente, et après avoir réglé les conditions de la requête, à peine capable de compléter la requête, mais il est également assez lent. En fait, de tous les résultats de la requête ne sont pas de lignes de données, le nombre de K seulement. Empiriquement, évidemment sous réserve de l'exécution sélectionner l'effet. Le code est vieux, jetez un oeil et a trouvé un problème que la table de traitement de sélection sera un autre à haute fréquence des processus d'affaires mis à jour. Ce sentiment trouver les raisons. requête sans conditions, la nature est l'analyse complète de la table, et il a été verrou partagé pour obtenir toutes les lignes afin de sélectionner l'achèvement et la haute fréquence de mise à jour, sélectionnez Obtenir un verrou partagé aura une incidence sur le délai d'attente finale n'a pas réussi à terminer la collection. Et affiner votre recherche, il peut être réticent à le faire.

Pour vérification, ou faire un test. DB MySQL en deux connexions différentes, chaque transaction départ A, B. Une mise à jour effectuée dans la, mais n'engage pas, sélectionnez effectuée dans B. Selon l'expérience passée, B select sera bloqué. Toutefois, le résultat est pas le cas. La seconde End Select B, le résultat avant la mise à jour. Après cela, le test ne soit pas soumis au moment de A, B effectuer la mise à jour, c'est bloqué. Voir le niveau d'isolation DB, la valeur par défaut est lecture répétée.

Retour à MS SQL Server, puis à tester, l'expérience est toujours correcte. Le phénomène est aussi vrai dans MySQL. phénomène présenté d'application semble vraiment sélectionner la mise à jour influencé, car il n'y a pas de haute fréquence aussi essayé de mettre à jour la requête de l'application est comme voler.

Lorsque vous utilisez les premières années d'Oracle, l'exposition à ce qu'on appelle l'instantané multi-version peut-être qu'il est mysql à oracle là-bas, ajouter aussi cette mémoire de la technologie.

Le plus environnement d'exploitation incertain est l'application, qui utilise une structure de cluster db multi-maître. De plus, l'opération proprement dite, le plus probable, les mises à jour se produisent sur un serveur db, la requête se produit sur un autre serveur db. Je ne sais pas s'il est vrai la structure, ce qui provoque l'avant du phénomène. Probablement le même db, mais beau travail. Mais maintenant, il ne pouvait pas être vérifiée.

 

Je suppose que tu aimes

Origine www.cnblogs.com/shiningjune/p/12600133.html
conseillé
Classement