mysql中事务是互斥的么?

分别在不同的线程调用同一个带事务的方法,那么这两个方法的执行时互斥的么,即一个方法必须要等另一个方法操作完么?

阅读 5.4k
3 个回答

这个取决于数据库的隔离级别。两个事务不互相影响就没有必要互斥啊。

ISO 标准定义了下列隔离级别,SQL Server 数据库引擎支持所有这些隔离级别:

  • 未提交读(隔离事务的最低级别,只能保证不读取物理上损坏的数据)

  • 已提交读(数据库引擎的默认级别)

  • 可重复读

  • 可序列化(隔离事务的最高级别,事务之间完全隔离)

当发生了当前读,都会对相应的行加上排它锁,并且在事务结束以后释放锁

  1. 两次操作事务有对相同的行加排它锁,其中一个线程就需要等待另外一个线程事务提交才能继续执行程序

  2. 两次操作事务并没有有对相同的行加排它锁的,两个线程相互不影响

这首先和你操作的数据有关系,如果操作的数据连个交集都没有,就是并行的,如果有交集,还跟数据库的事物隔离级别又关系,这里面东西就多了,你可以查查。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题