mysql 设置事物自动提交_mysql事务自动提交的问题
1:mysql的aut0commit配置默认是开启的,也就是没执行一条sql都会提交一次,就算显示的开启事务也会导致多条SQL不在一个事务中,
如果需要相关的SQL在同一个事务中执行,那么必须将autocommit设置为OFF,再显式开启事务。
2:如果使用spring的事务,那么不存在这个问题,spring的事务默认是关闭自动提交的,做法是判断连接池是否开启事务自动提交,如果连接池开启自动提交则设置自动提交为关闭,否则不做操作,因为某些jdbc驱动做设置自动提交关闭代价昂贵。
/**
* This implementation sets the isolation level but ignores the timeout.
*/
@Override
protected void doBegin(Object transaction, TransactionDefinition definition) {
.........省略某些代码
// Switch to manual commit if necessary. This is very expensive in some JDBC drivers,
// so we don't want to do it unnecessarily (for example if we've explicitly
// configured the connection pool to set it already).
if (con.getAutoCommit()) {
txObject.setMustRestoreAutoCommit(true);
if (logger.isDebugEnabled()) {
logger.debug("Switching JDBC Connection [" + con + "] to manual commit");
}
con.setAutoCommit(false);
}
}
mysql 设置事物自动提交_mysql事务自动提交的问题相关推荐
- mysql 提交_MySQL 事务提交过程
开发老大要求通过binlog查询一条被修改的数据,数据被查出后问我,有没有可能binlog中不会记录,回答不会,因为数据被修改,若失败直接回滚,不会在binlog中记录,此刻一个朋友用了洪荒之力告诉我 ...
- linux mysql提交_MySQL 事务提交过程
开发老大要求通过binlog查询一条被修改的数据,数据被查出后问我,有没有可能binlog中不会记录,回答不会,因为数据被修改,若失败直接回滚,不会在binlog中记录,此刻一个朋友用了洪荒之力告诉我 ...
- mysql 自动增量_MySQL重置自动增量值
在本教程中,我们将向您展示如何重置MySQL中AUTO_INCREMENT列的自动增量值. MySQL提供了一个有用的功能,称为自动增量. 您可以将自动递增属性分配给表的列,以生成新行的唯一标识. 通 ...
- mysql的回滚机制_mysql事务回滚机制概述
应用场景: 银行取钱,从ATM机取钱,分为以下几个步骤 1 登陆ATM机,输入密码: 2 连接数据库,验证密码: 3 验证成功,获得用户信息,比如存款余额等: 4 用户输入需要取款的金额,按下确认键: ...
- 列表数据提交_MySQL事务提交过程(一)
MySQL作为一种关系型数据库,已被广泛应用到互联网中的诸多项目中.今天我们来讨论下事务的提交过程. MySQL体系结构 由于mysql插件式存储架构,导致开启binlog后,事务提交实质是二阶段提交 ...
- mysql行级锁作用_Mysql事务及行级锁的理解
在最近的开发中,碰到一个需求签到,每个用户每天只能签到一次,那么怎么去判断某个用户当天是否签到呢?因为当属表设计的时候,每个用户签到一次,即向表中插入一条记录,根据记录的数量和时间来判断用户当天是否签 ...
- mysql使用jdbc进行批量插入时把事务设为手动提交比事务自动提交速度快了10倍
第一次写博客,写的不好请多多包涵.欢迎评论 今天需要对mysql做一个批量插入的操作,使用的是原生的jdbc对mysql进行操作,大约插入20几万条数据,刚开始事务是自动提交的,插完数据大约用了4分钟 ...
- mysql timestamp 自动更新_mysql timestamp自动更新
最近遇到timestamp的自动更新时间问题,记录如下: 先看mysql官方手册(翻译稿): 在CREATE TABLE语句中,可以用下面的任何一种方式声明第1个TIMESTAMP列: 1.用DEFA ...
- mysql 配置自动截断_MySql超长自动截断实例详解
MySql超长自动截断实例详解 小伙伴问到一个问题,为啥在项目中调用插入或者更新语句时超长的字无法自动截断,而在navicat中直接执行是可以自动截断的? 如下 CREATE TABLE `p_app ...
最新文章
- linux shell面试题(一)
- springMVC保存数据到mysql数据库中文乱码问题解决方法
- python list转字符串_我用python写了个自动生成给文档生成索引的脚本!懒人智慧...
- python学习_22(文件)
- 移动端数据统计,精细化运营的永动机
- 骚操作!Intellij IDEA居然藏着这些实用小技巧 !
- Android学习指南
- FreeSql (三十三)CodeFirst 类型映射
- Python——生成一个大文件ips.txt,要求1200行 ,每行随机为172.25.254.0/24段的ip(京东二面笔试题)
- Android 隐藏类的使用
- Makefile 编写教程(由简至难)
- mi5splus android9,小米5s plus和华为mate9买哪个好 小米5sPlus和华为mate9区别对比评测...
- The English (Porter2) stemming algorithm
- 虚拟机使用cheese调用摄像头黑屏问题解决
- 2022-2027年中国活性染料行业市场深度分析及投资战略规划报告
- 论文阅读:CTF:Anomaly Detection in High-Dimensional Time Series with Coarse-to-Fine Model Transfer
- oracle数据库中的update语句的用法
- linux 之sed命令详解
- Python简短的自学笔记
- hbase周学习——赵俊杰