扫码关注官方订阅号
人生最曼妙的风景,竟是内心的淡定与从容!
一篇文章,有关autocommit给我带来的问题
上面那篇文章是我在实际工作中遇到的有关数据库连接的autocommit的问题,其实如果你的业务逻辑设计就是运行自动提交,那么这个设置完全是ok的,但是如果不是就别这么设置。你每次在请求结束的时候设置autocommit很没有必要,操作变得复杂,如果忘了怎么办呢,是吧。最好是autocommit=false,然后如果业务根据实际需要设置autocommit即可,每次结束也不需要去重置这个状态。
如果你把数据库配置为autocommit=false,每次更新、插入、删除等操作都必须conn.commit(),所以数据库不能设置为autocommit=false。
既然数据库设置为了自动提交,所以当需要开启事务的时候,必须设置为autocommit=false。
现在回答你的问题:
1)来回设置autocommit是否有必要? 答:有,假如你提交完当前事务后,不设置为autocommit=false,在未关闭此连接之前,再次使用该连接进行更新、插入、删除等操作,每次操作需要conn.commit(),因为不会自动提交了。 连接池的连接不会真正关闭,应该更容易引发,不自动提交问题。
2)后面的几个是否问题,我觉得没必要回答了。以上是我在项目中遇到的此问题,当时没找到答案。这是我的理解(可能不对啊,希望不误人子弟),供大家参考。项目中用spring管理的事务,不知道spring怎么处理的。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
一篇文章,有关autocommit给我带来的问题
上面那篇文章是我在实际工作中遇到的有关数据库连接的autocommit的问题,其实如果你的业务逻辑设计就是运行自动提交,那么这个设置完全是ok的,但是如果不是就别这么设置。
你每次在请求结束的时候设置autocommit很没有必要,操作变得复杂,如果忘了怎么办呢,是吧。
最好是autocommit=false,然后如果业务根据实际需要设置autocommit即可,每次结束也不需要去重置这个状态。
如果你把数据库配置为autocommit=false,每次更新、插入、删除等操作都必须conn.commit(),所以数据库不能设置为autocommit=false。
既然数据库设置为了自动提交,所以当需要开启事务的时候,必须设置为autocommit=false。
现在回答你的问题:
1)来回设置autocommit是否有必要? 答:有,假如你提交完当前事务后,不设置为autocommit=false,在未关闭此连接之前,再次使用该连接进行更新、插入、删除等操作,每次操作需要conn.commit(),因为不会自动提交了。
连接池的连接不会真正关闭,应该更容易引发,不自动提交问题。
2)后面的几个是否问题,我觉得没必要回答了。
以上是我在项目中遇到的此问题,当时没找到答案。这是我的理解(可能不对啊,希望不误人子弟),供大家参考。项目中用spring管理的事务,不知道spring怎么处理的。