2009-04-23 14 views
2

Je sais que les transactions de base de données sont utilisées pour s'assurer que toutes les instructions de la transaction seront exécutées ou qu'aucune d'entre elles ne le sera. Mais qu'en est-il du verrouillage et de la sécurité des threads, par exemple si j'ai un sproc qui affecte plusieurs tables et que j'utilise une transaction dans ce sproc, ce sproc est appelé à partir de différents clients en même temps, les transactions fonctionnent-elles en parallèle ou vont-ils être mis en file d'attente? En d'autres termes, l'utilisation d'une transaction garantit-elle qu'elle «verrouille» tous les autres clients et les oblige à attendre la fin de la transaction?Une question de débutant sur les transactions de base de données

Existe-t-il des différences entre les transactions de base de données dans SQL Server et MySQL? Je veux dire la façon dont ils travaillent.

Répondre

2

Selon le SGBD, mais les procédures stockées ne sont généralement pas verrouillées, les lignes des tables de base de données sont verrouillées et empêchent ainsi l'interférence de deux process stockés.

La granularité du verrouillage est plus fine, ce qui réduit les risques de contention.

Re différence entre SQLServer et MySQL, je ne sais pas au niveau inférieur - ils peuvent bien faire des choses très différentes. Mais ils seront identiques en termes de standard SQL (sinon ils seraient plutôt inutiles).

+1

Si vous voulez ajouter, InnoDB verrouille la table, MyISAM bloque une rangée. en MySQL. –

+2

@ Ólafur Waage, en fait c'est l'inverse –

+0

Etes-vous en train de dire que MySQL (en utilisant l'un des moteurs, pas clair lequel) verrouille une table entière pendant la durée d'une transaction? Cela semble une façon horrible de le faire. – paxdiablo

1

TStamper déjà fourni un lien vers SQL Server vs MySQL, mais si vous intéressé par le comportement transactionnel général vérifier ces liens:

http://www.oracle.com/technology/oramag/oracle/05-nov/o65asktom.html http://en.wikipedia.org/wiki/Isolation_(database_systems)

Le niveau d'isolement varie en fonction du SGBD. Certains systèmes de SGBD permettent de configurer le niveau d'isolation (un niveau d'isolement plus élevé signifie généralement une vitesse/un débit inférieurs en raison d'un conflit).

Questions connexes