关于数据库事务的新手问题

时间:2009-04-23 02:16:35

标签: sql mysql sql-server transactions

我知道数据库事务用于确保事务中的所有语句都将被执行,或者它们都不会执行。

但是关于锁定和线程安全性如何,例如,如果我有一个影响多个表的sproc并且我在该sproc中使用了一个事务,那个sproc同时从不同的客户端调用,那么事务将并行工作或者他们会排队吗?换句话说,使用事务保证它会“锁定”所有其他客户端并导致它们等到事务结束吗?

SQL Server和MySQL中的数据库事务之间是否存在任何差异?我的意思是他们的工作方式。

2 个答案:

答案 0 :(得分:2)

根据DBMS的不同,存储过程通常不会被锁定,数据库表中的行会被锁定,这就是阻止两个存储过程相互干扰的行。

具有更精细的锁定粒度,因此不太可能引起争用。

SQLServer和MySQL之间存在差异,我不知道在较低级别 - 他们可能会做很多不同的事情。但是它们在SQL标准方面是相同的(否则它们将毫无用处)。

答案 1 :(得分:1)

TStamper已经提供了SQL Server与MySQL的链接,但如果您对一般事务行为感兴趣,请查看以下链接:

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

隔离级别因DBMS而异。某些DBMS系统允许您配置隔离级别(较高的隔离级别通常意味着由于争用而导致较低的速度/吞吐量)。