学习
实践
活动
专区
工具
TVP
写文章

MySQL AutoCommit带来的问题

后来调整了一下思路,发现MySQL还有一个特性就是AutoCommit,即默认情况下,MySQL是开启事务的,下面表格能说明问题,表1: 但是,如果AutoCommit不是默认开启呢? 结果就会变成下面的表格,表2: 在关闭AutoCommit的条件下,SessionA在T1和T2两个时间点执行的SQL语句其实在一个事务里,因此每次读到的其实只是一个快照。 如下图: 无论如何commit,都无法改变这个连接的autocommit属性。 分析jdbc驱动代码可知,jdbc默认的AutoCommit状态是TRUE: 这实际上和MySQL的默认值是一样的。 因此,在这个连接被交还回连接池时,AutoCommit属性总是TRUE。 结论 任何查询接口都应该在获取连接以后进行AutoCommit的设置,将其设置为true。

25210
  • 广告
    关闭

    热门业务场景教学

    个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PDO扩展PDO::ATTR_AUTOCOMMIT 出坑记

    直接写了个简单的mysql pdo 连接数据库,并且插入数据到innodb表里面,结果没有任何问题,成功了,然后我就想到pdo里面有个参数PDO::ATTR_AUTOCOMMIT,是不是他在作怪? 使用getAttribute(PDO::ATTR_AUTOCOMMIT)) 获取他的值,打印,发现是1,证明是自动提交事务的 然后在我封装的框架里面,我打印了他的值,发现是0,问题找到 那么,在插入的时候 连接数据库的时候,options里面设置 PDO::ATTR_AUTOCOMMIT 为 1 插入操作的时候,自己执行commit,显式的完成一次事务,我采用了这个方法 遗留问题是,同样的PHP版本,为啥单独的连接 PDO::ATTR_AUTOCOMMIT为1 ,在启动的swoole-httpserer里面是0,我没有继续深入。

    49420

    PLSQL Developer中控制结果集表格自动提交

    其他历史文章, 《PLSQL Developer中文乱码问题》 《PLSQL Developer免密登录》 今天朋友碰巧问了个问题,PLSQL Developer的Preferences首选项中这个“AutoCommit 首先看了下工具自带的手册,对“AutoCommit posted records”的介绍, AutoCommit posted records. 重点来了,如果勾选了“AutoCommit posted records”,此时刚才编辑的数据,会自动提交,工具栏中commit和rollback的按钮是灰的, ? 其实能想象到,“AutoCommit SQL”和“AutoCommit posted records”针对的是两种不同场景的数据维护操作,一个是通过SQL完成的数据增删改(“AutoCommit SQL ”),另一个则是通过for update编辑结果集表格的形式完成数据增删改(“AutoCommit posted records”)。

    37820

    《叶问》32期,一样的Python代码,为什么可以删表,却不能更新数据

    #约158行附近 158 :param autocommit: Autocommit mode. None means use server default. ='YeWen.3306', port= 3306, db='test', charset='utf8mb4', autocommit=True) 2. 但还要更进一步,开启或关闭autocommit有什么利弊呢?简言之,有几点建议: 当有大批量数据更新时,可以先关闭autocommit,等事务结束后,再手动提交。 关闭autocommit的缺点在于,当忘记主动提交事务时,可能会造成相应的行锁一直持有不释放,其他事务会被长时间阻塞,如果是线上生产环境,则可能造成严重后果(业务长时间不可用)。 因此,需要根据实际情况动态调整autocommit的模式,并没有通用的设置。

    19830

    MySQL 中的事务控制机制

    自动提交 默认情况下,MySQL 是自动提交(autocommit)的。也就意味着:如果不是显式地开始一个事务,每个查询都会被当做一个事务执行 commit。 在当前连接中,可以通过设置 autocommit 来修改自动提交模式: mysql> show variables like 'autocommit'; +---------------+------- ,0或OFF表示禁用自动提交模式 如果设置了autocommit=0,当前连接所有事务都需要通过明确的命令来提交或回滚。 对于 MyISAM 这种非事务型的表,修改 autocommit 不会有任何影响,因为非事务型的表,没有 commit或 rollback 的概念,它会一直处于 autocommit 启用的状态。 小结 本小节主要介绍了 MySQL 中事务控制的一些特点,如何调整自动提交(autocommit)、如何调整隔离级别调整、以及讲解了在事务中使用混合存储引擎的缺点。

    8030

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 汽车相关识别

      汽车相关识别

      汽车相关识别(Vehicle OCR)提供驾驶证识别、行驶证识别、车牌识别、车辆VIN码识别等多种服务,支持将图片上的文字内容,智能识别为结构化的文本,可应用于车主身份认证、ETC出行、违章识别、停车管理等多种场景,大幅提升信息处理效率。大幅提升信息处理效率。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券