首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我在java中使用connection.setAutoCommit(false)时,在MySQL上设置了什么锁?

当我在java中使用connection.setAutoCommit(false)时,在MySQL上设置了什么锁?
EN

Stack Overflow用户
提问于 2013-12-27 20:47:33
回答 1查看 144关注 0票数 1

假设我有下面这段代码。

代码语言:javascript
复制
try {
   connection.setAutoCommit(false) ;
   ....
   ....


   connection.commit();
   }
 catch (Exception e)
   {
   }

上面的事务是否在try语句的代码中引用的MySQL表上获取锁?如果是这样,这些锁是什么类型的?这些是读锁还是写锁?另外,它是在表上生成行级锁还是完全锁?

EN

回答 1

Stack Overflow用户

发布于 2013-12-27 20:56:04

JDBC中有两种可用的锁定。

  1. 乐观锁定
  2. 悲观锁定

悲观锁定在选择要更新的行时立即锁定记录。

乐观锁定仅在发生更新时锁定记录。

但是connection.setAutoCommit(false);意味着您正在此连接上启动一个事务。您将对此连接中的DB表所做的所有更改将在提交时保存,或在回滚时恢复(或在未提交的情况下断开连接)。这并不意味着你锁定了整个数据库。其他用户在尝试访问您的事务使用的表时是否会被锁定,将取决于您的事务正在执行的操作和事务隔离级别。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20801008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档