首页 > 其他分享 >长事务

长事务

时间:2023-03-08 19:36:49浏览次数:42  
标签:语句 autocommit 事务 trx innodb 提交

缺点

  • 长事务会导致系统存在古老视图,提交前其undolog都必须保留,会占用大量存储空间。

事务启动方式

显式启动事务语句

需要手动提交。
begin 或 start transaction。回滚语句是 rollback;执行commit 则提交事务;执行 commit work and chain,则是提交事务并自动启动下一个事务,这样也省去了再次执行 begin 语句的开销,同时带来的好处是从程序开发的角度明确地知道每个语句是否处于事务中。

非显式开启的事务

需要看autocommit参数,0需要手动提交,1自动提交。
set autocommit=0,这个命令会将这个线程的自动提交关掉。意味着如果你只执行一个 select 语句,这个事务就启动了,而且并不会自动提交。这个事务持续存在直到你主动执行 commit 或 rollback 语句,或者断开连接。

建议使用set autocommit=1,通过显式语句的方式来启动事务。

查询长事务

information_schema 库的 innodb_trx 这个表中查询长事务,比如下面这个语句,用于查找持续时间超过 60s 的事务。

select * from information_schema.innodb_trx where TIME_TO_SEC(timediff(now(),trx_started))>60

长事务处理

  1. 通过information_schema.innodb_trx表监控事务的持续时间
  2. 增加undo表空间
  3. 通过配置参数max_execution_time指定事务执行的最长时间
  4. 利用pt工具监控长事务。

标签:语句,autocommit,事务,trx,innodb,提交
From: https://www.cnblogs.com/kiper/p/17195800.html

相关文章

  • 事务隔离
    隔离性与隔离级别事务特点:ACID(Atomicity、Consistency、Isolation、Durability)原子性/一致性/隔离性/持久性隔离级别读未提交一个事务还没提交时,其变更就能被其他......
  • 云图说丨云数据库GaussDB(for MySQL)事务拆分大揭秘
    摘要:数据库代理提供事务拆分的功能,能够将事务内写操作之前的读请求转发到只读节点,降低主节点负载。本文分享自华为云社区《【云图说】第270期云数据库GaussDB(forMySQL)......
  • 事务的传播行为
    事务的传播行为如果当前存在一个事务事务的传播行为(PropagationBehavior)表示整个业务处理过程所跨越的业务对象,将以什么样的行为参与事务。即在一个service中调用其他......
  • 分布式事务-最大努力通知 20230307
              ......
  • 微服务之事务管理Seata
    Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务,也是SpringCloudAlibaba提供的组件, Seata官方文档:为什么需要Sea......
  • 20_Spring_零XML事务控制
    ​ 创建配置类 packagecom.msb.config;importcom.alibaba.druid.pool.DruidDataSource;importorg.springframework.beans.factory.annotation.Value;importor......
  • 20_Spring_零XML事务控制
     创建配置类 packagecom.msb.config;importcom.alibaba.druid.pool.DruidDataSource;importorg.springframework.beans.factory.annotation.Value;importorg.springf......
  • 20_Spring_零XML事务控制
     创建配置类 packagecom.msb.config;importcom.alibaba.druid.pool.DruidDataSource;importorg.springframework.beans.factory.annotation.Value;importorg.springf......
  • 20_Spring_零XML事务控制
    ​ 创建配置类 packagecom.msb.config;importcom.alibaba.druid.pool.DruidDataSource;importorg.springframework.beans.factory.annotation.Value;importor......
  • MySQL事务的隔离级别
    1.读未提交读取到别人未提交的数据,即脏读2.读已提交读取别人已经提交的数据,但是不同时间点读取到的数据可能并不一致,别人可能多次提交了不同的数据,这种即不可重复读3.......