gpt4 book ai didi

java - 当我在 java 中使用 connection.setAutoCommit(false) 时,对 MySQL 设置了什么样的锁定?

转载 作者:行者123 更新时间:2023-11-29 00:21:41 30 4
gpt4 key购买 nike

假设我有以下代码。

try {
connection.setAutoCommit(false) ;
....
....


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

上述事务是否获取了 try 语句代码中引用的 MySQL 表的锁?如果是,这些锁是什么类型的?这些是读锁还是写锁?另外,它是对表进行行级锁定还是完全锁定?

最佳答案

JDBC 中有两种可用的锁定。

  1. 乐观锁
  2. 悲观锁

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

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

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

关于java - 当我在 java 中使用 connection.setAutoCommit(false) 时,对 MySQL 设置了什么样的锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20801008/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com