首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏用户1337634的专栏

    如何避免事务

    MySQL的事务会因为事务视图太老,MVCC时中需要执行很多的回滚操作才能得到对应的数据版本,而且还会形成很大的回滚段,所以会影响性能。 那么在项目开发中,应该如何避免大事务呢? 一般可以从客户端和服务器端分别进行控制 客户端 设定事务执行的超时时间(SET MAX_EXECUTION_TIME),可以避免意外的事务占用过多资源 事务开始到结束的时间内,避免做耗时的操作,比如网络请求等 尽量把容易有冲突的SQL语句写在业务逻辑后面,减少锁占用时间 服务器端 监控 information_schema.Innodb_trx 表,设置事务阈值,超过就报警或者 kill 删除超时的连接: 如果真的出现大事务导致回滚段过大,这样设置后清理起来更方便。

    1.6K20发布于 2021-06-29
  • 来自专栏Postgresql源码分析

    Mysql事务总结

    事务现象 1 PROCESSLIST 只能看到sleep时间较长,并不能看出来是事务 2 INNODB_TRX select t. 但事务的trxquery是NUL,这并不是说事务什么也没执行,一个事务可能包含多个SQL,如果SQL执行完毕就不再显示了。 entries 1 MySQL thread id 71, OS thread handle 139874604435200, query id 9040045 172.17.0.1 server_234 二 事务内容 = 'SYSTEM_USER' AND ps.id = 进程ID ORDER BY esh.EVENT_ID; 三 事务等锁 mysql> select * from sbtest5 where tmp.blocking_thread = p.id AND t.thread_id = c.THREAD_ID AND t.processlist_id = p.id \G 四 监控事务

    1.2K51编辑于 2022-05-12
  • 来自专栏MySQL数据库技术栈

    如何查找事务及大事务

    INNODB_TRX 表提供了信息关于在InnoDB中执行的当前的每个事务,包含是否事务是等待一个锁,当事务开始后事务正在执行的SQL语句。 ---------+-----------------+------+-----+---------+-------+ 25 rows in set (0.01 sec) #trx_started:事务开始时间 ,可以判断该事务是否是事务。 #trx_rows_modified:事务更改的行数,可以判断该事务是否是大事务。 如何判断事务? #查找执行时间超过30秒的事务。 #查找修改行数数量前十的事务

    1.5K11编辑于 2022-05-25
  • 来自专栏温安适的blog

    事务引起线上问题

    (`point_id`); partner_XXX表,线上数据 4W, 空间25M,理论加索引时间,小于1s ​ 是什么造成卡住的,查看阿里云 自治服务-> 一键诊断 > 自治中心->事务和锁快照 部分,如下图发现: 加索引的语句,在等待元数据锁,被一个没有任何执行语句的幽灵事务卡主了。 幽灵事务的产生 IDEA 社区版本,Database Navigator 插件 多次执行show index,操作,并查看返回结果中的数据时,会开启事务,如下图 问题总结 首先,IDEA 社区版本, Database Navigator 插件,调用show index 语句,开启了 事务,没有提交,持有了metadata lock。

    47730编辑于 2022-05-05
  • 来自专栏MySQL技术

    MySQL-事务详解

    1.什么是事务 首先我们先要知道什么是事务,顾名思义就是运行时间比较长,长时间未提交的事务,也可以称之为大事务。这类事务往往会造成大量的阻塞和锁超时,容易造成主从延迟,要尽量避免使用事务。 2.如何找到事务 遇到事务等待问题时,我们首先要做的是找到正在执行的事务。 如果我们想看到这个事务执行过的SQL,看是否可以杀掉事务,怎么办呢? 3.监控事务 现实工作中我们需要监控下事务,定义一个阈值,比如说30s 执行时间超过30s的事务即为事务,要求记录并告警出来,提醒管理人员去处理。 总结: 本文主要介绍了事务相关内容,怎样找到事务,怎么处理事务,如何监控事务。可能有些小伙伴对事务理解还不多,希望这篇文章对你有所帮助。

    3.7K30发布于 2019-09-23
  • 来自专栏小工匠聊架构

    SpringBoot - 优雅的处理【事务

    What 运行时间比较长,长时间未提交的事务,都可以称之为事务 事务引发的常见危害有: 数据库连接池被占满,应用无法获取连接资源 容易引发数据库死锁 数据库回滚时间 在主从架构中会导致主从延时变大 等等 ---- How 原则: 对事务方法进行拆分,尽量让事务变小,变快,减小事务的颗粒度 我们知道@Transactional注解进行事务管理的操作叫声明式事务, 使用声明式事务的优点 很明显 声明式事务有一个最大的缺点,就是事务的颗粒度是整个方法,无法进行精细化控制。 那 与声明式事务对应的就是编程式事务 是不是可以解决 颗粒度的问题呢? return Boolean.TRUE; }); } 使用编程式事务最大的好处就是可以精细化控制事务范围, 所以避免事务最简单的方法就是不要使用声明式事务@Transactional,而是使用编程式事务手动控制事务范围 使用@Transactional 又能避免产生长事务 那既想使用@Transactional 又想避免产生长事务呢? 那就需要对方法进行拆分,将不需要事务管理的逻辑与事务操作分开.

    2.4K10编辑于 2022-03-10
  • 来自专栏大数据技术架构

    Kafka 的事务到底啥样?

    作者 | 来自网络 整理 | 纯粹技术分享 这篇文章主要讲述 Kafka 事务性相关原理,从 Kafka EOS 语义、幂等性、事务性等几个方面阐述。 Kafka 事务性 Kafka 事务支持 正是因为 Kafka Idempotent 不提供跨多个 Partition 和跨会话场景下的保证,因此,我们是需要一种更强的事务保证,能够原子处理多个 Partition abortTransaction 五个事务方法。 */ public void commitTransaction() throws ProducerFencedException; /** * 放弃事务,类似回滚事务的操作 事务属性实现前提是幂等性,即在配置事务属性 transaction id 时,必须还得配置幂等性;但是幂等性是可以独立使用的,不需要依赖事务属性。

    1.8K10发布于 2019-08-16
  • 来自专栏kwai

    基于Druid的事务监听实现

    extends FilterEventAdapter { //记录事务状态与事务开启时间 private static final ThreadLocal<Long> TX_BEGIN_TIME = new ThreadLocal<>(); //记录事务过程中执行的sql(保留执行顺序) private static final ThreadLocal<List<String>> 2、事务告警(记录本次事务涉及到的sql+记录本次事务的应用层调用栈) if (TX_BEGIN_TIME.get()! config.getHealthCheckLongTxEnable()) { if (timeCost>=config.getHealthCheckLongTx()) { //事务告警 commonDto.setEventTime(LocalDateTime.now().toString()); commonDto.setEventType("事务

    4.4K82编辑于 2022-12-01
  • 来自专栏oracleace

    MySQL 8.0:如何找到事务(译文)

    内容摘要:让我们看看如何在MySQL 8.0中轻松找到那些可能成为DBA噩梦的正在运行的事务。 我已经开发了一个MySQL Shell插件,可以让你找到按时间排序的当前事务,这个插件还可以让您获取所需事务的详细信息。 让我们看看如何轻松找到那些可能成为DBA噩梦的事务(参见MySQL历史列表长度文章https://lefred.be/content/a-graph-a-day-keeps-the-doctor-away-mysql-history-list-length WHERE conn_id=<VALUE OF mysql_thread_id COLUMN>) ORDER BY event_id; 让我们试一下: 如您所见,我们可以查询在这个事务中已经执行的 享受MySQL,避免事务

    1.9K20编辑于 2023-04-06
  • 来自专栏技术成长

    MySQL进行故障恢复以及处理事务

    在MySQL中处理事务的方法包括以下几个方面:避免事务:尽量减少长时间运行的事务,将事务拆分为较小的逻辑单元,减少锁定资源的时间。快速提交:尽量减少事务的持续时间,避免不必要的等待。 设置合适的事务隔离级别:根据业务需求设置合适的事务隔离级别,避免不必要的锁定和冲突。控制事务的并发数:通过限制同时运行的事务数量,可以减少事务对性能的影响。 事务对性能的影响包括以下几个方面:锁定资源时间:事务持有锁定资源的时间较长,会导致其他事务的等待时间增加,从而影响了并发性能。事务日志写入:事务进行过程中,会不断的产生事务日志,并写入磁盘。 数据页面膨胀:事务会导致数据页面过早的膨胀,使得其他并发事务在需要访问该数据页面时,需要有更长的等待时间。 总结事务对性能的影响主要表现在锁定资源时间的增加、事务日志写入的增加、数据页面膨胀以及回滚时间的增加等方面。因此,需要合理地管理和控制事务,以保证系统的性能和可用性。

    78871编辑于 2023-11-07
  • 来自专栏站长的编程笔记

    【说站】Mysql事务有什么影响

    Mysql事务有什么影响 1、事务意味着系统中会有一个非常旧的事务视图。在提交此事务之前,应保留回滚记录,这将导致大量的存储空间。 2、事务也会占用锁资源,可能会拖累数据库。 = 'SYSTEM_USER'   AND ps.id = 进程ID ORDER BY   esh.EVENT_ID; 以上就是Mysql事务的影响,希望对大家有所帮助。

    87510编辑于 2022-11-24
  • 来自专栏全栈测试技术

    JMeter笔记11 | JMeter事务

    1 事务性能测试比较关注TPS,而TPS代表每秒事务数;每个事务对应的是每个请求;JMeter把每个请求统计成一个事务;JMeter也可以把多个操作统计成一个事务,可通过逻辑控制器中的事务控制器来完成。 ,可为空Generate parent sample 1、若事务控制器下有多个请求,勾选后在“查看结果树”中可同时看到事务控制器和每个取样器(请求);2、是否控制器的成功取决于子事务是否成功;3、任何一个失败代表整个事务失败 4.1 添加【事务控制器】在线程组“禅道接口”下添加事务控制器,如下:图片直接运行脚本,发现“查看结果树”中没有事务控制器的显示图片4.2 勾选Generate parent sample图片勾选Generate 4.3 在事务控制器下添加取样器我们把之前脚本中的“1-获取token”和“1-1-获取用户列表”拖放到事务控制器下;运行后发现,事务控制器是成功的,且下边的取样器也可以看到。 图片我们再把“2-创建用户”这个失败的请求放到事务控制器下,再次运行,会发现事务是失败的,那就满足规则“事务控制器下任何一个取样器失败,则整个事务失败”图片5 本文涉及到的脚本<?

    1.1K90编辑于 2023-02-14
  • 分布式事务SAGA模式详解:事务与复杂流程的柔性事务方案

    分布式事务SAGA模式详解:事务与复杂流程的柔性事务方案在分布式系统中,并非所有事务都是“短平快”的操作。 而SAGA模式作为专为事务和复杂流程设计的柔性事务方案,通过“拆分本地事务+补偿事务”的思路,实现了低侵入、高适配的最终一致性,成为这类场景的最优解。 一、铺垫:事务场景的痛点,SAGA的诞生背景要理解SAGA的价值,首先要明确事务/复杂流程场景下,传统分布式事务方案的核心短板:2PC/3PC完全失效:事务流程中,参与者需长时间持有资源锁,阻塞问题会被无限放大 核心优势:适配事务,低侵入易落地完美适配事务场景:每个本地事务执行后立即提交,无资源锁阻塞,支持流程中的长时间等待(如用户支付等待、物流运输),彻底解决了强一致性方案在事务中的痛点;业务侵入性低: SAGA模式的核心价值在于“以最低的业务侵入成本,解决事务和复杂流程的最终一致性问题”,它打破了强一致性方案对“短事务”“即时性”的约束,也规避了TCC模式高开发成本的短板,成为事务场景的首选方案。

    82910编辑于 2025-12-26
  • 来自专栏学习笔记持续记录中...

    JDBC 处理事务11

    数据库事务 1)在数据库中,所谓事务是指一组逻辑操作单元,使数据从一种状态变换到另一种状态。 4)事务的ACID(acid)属性 原子性:原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态 隔离性:事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对兵法的其他事务是隔离的,并发执行的各个事务之间不能互相干扰 持久性:持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响 JDBC 事务处理 1)事务:指构成单个逻辑工作单元的操作集合 2)事务处理 当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),要么整个事务回滚(rollback)到最初状态 3)当一个连接对象被创建时,默认情况下是自动提交事务:每次执行一个SQL语句时,如果执行成功

    44810发布于 2020-03-17
  • 来自专栏小雨的CSDN

    11.MySQL事务(必考要点)

    1.事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。 在不同的环境中,都可以有事务。对应在数据库中,就是数据库事务。 2.事务的特性(ACID) 1)原子性:事务中的若干个操作只有两种结果,全部成功和全部失败(“全部失败”不是指全部步骤都失败了,而是一旦中间某个步骤执行出错,就把前面已经执行完毕的步骤回滚回去) 2)一致性 :执行事务前后,事务始终处于合法的状态(例如转账时,减余额账户时,不能减成负的) 3)持久性:事务一旦执行完毕,此时对于数据的修改是持久生效的(写入磁盘了) 4)隔离性:并发执行多个事务,事物之间不能相互干扰 (隔离是为了保证数据的准确,并发是为了提高事务执行的效率; 如果多个事物之间隔离性越强,并发程度就越低,效率就越低 如果多个事物之间隔离性越弱,并发程度就越高,效率就越高) 并发执行事务时,产生的问题 1.脏读: 如果一个事务正在准备修改数据,还没提交呢,另外一个事务读取了这里即将被修改的内容 *****解决脏读的办法:给写操作加上锁(也就是写的时候不允许另外一个事务读,如果读就会阻塞,也就是写的时候不能读

    23710编辑于 2022-10-26
  • 来自专栏Devops专栏

    11. 数据库事务

    11. 数据库事务 前言 上一章节,我们学习了数据插入的批量操作,那么下面再来认识一下数据库事务。 数据库事务 1. 数据库事务介绍 事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。 事务处理(事务操作):保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。 (); 方法回滚事务 2.1 数据库事务的问题引入 下面我们来看一个转账的示例。 隔离性(Isolation)事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 数据库事务的隔离性: 数据库系统必须具有隔离并发运行各个事务的能力, 使它们不会相互影响, 避免各种并发问题。 一个事务与其他事务隔离的程度称为隔离级别。

    55010编辑于 2022-01-17
  • 来自专栏故里学Java

    MySQL的事务隔离级别和事务,看这一篇就够了

    事务意味着系统里面会存在很老的事务视图,由于这些事务随时可能访问数据库里面的任何数据,所以这个事务提交之前,数据库里面它可能用到的回滚记录都必须保留,这就导致了大量占用内存。 除了影响回滚段,事务还会占用锁资源,也有可能拖垮整个库。 有一些客户端连接框架会默认连接成功后执行一个set autocommit = 0命令,这就导致了接下来的查询都在事务中,如果是连接,就导致了意外的事务。 你可以在 information_schema 库的 innodb_trx 这个表中查询事务,比如下面这个语句,用于查找持续时间超过 60s 的事务。 怎么查询各个表中的事务? 如何避免事务的出现? 既然在看了,就点一下吧!

    1.4K20发布于 2020-11-25
  • 来自专栏波波烤鸭

    11】Spring源码-分析篇-事务源码分析

    Spring源码分析-事务源码分析 一、事务的本质 1. 一个逻辑工作单元要成为事务,必须满足所谓的 ACID(原子性、一致性、隔离性和持久性)属性。事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。 2. JDBC中的事务管理   事务的本质我们还是要先来看下JDBC中对事务的处理。 -- Spring中,使用XML配置事务三大步骤: 1. 创建事务管理器 2. 配置事务方法 3. 1.Spring事务的源码设计 1.1 事务管理器   我们来看看事务管理器(PlatformTransactionManager).

    2K30编辑于 2022-10-28
  • 来自专栏小工匠聊架构

    Redis-11使用 watch 命令监控事务

    文章目录 概述 Redis watch流程 ABA问题 使用watch成功提交的事务的案例 使用watch回滚的事务的案例 概述 在 Redis 中使用 watch 命令可以决定事务是执行还是回滚。 当 Redis 使用 exec 命令执行事务的时候,它首先会去比对被 watch 命令所监控的键值对, 如果没有发生变化,那么它会执行事务队列中的命令,提交事务; 如果发生变化,那么它不会执行任何事务中的命令 ,而去事务回滚。 无论事务是否回滚 , Redis 都会去取消执行事务前的 watch 命令 ---- Redis watch流程 流程如下: ? — 客户端 1:执行事务,但是事务会先检查在 T2 时刻被监控的 key1 是否被其他命令修改过。

    1.2K10发布于 2021-08-17
  • 来自专栏sql优化

    事务范围控制:避免锁的数据库优化策略

    引言:高并发场景下的数据库性能瓶颈在电商秒杀、金融交易等高并发场景中,数据库事务引发的锁竞争是典型的性能瓶颈。笔者曾参与某支付系统优化,发现超过 60% 的慢查询源于事务范围过大导致的锁等待。 锁的四大危害阻塞链式反应:一个事务可能阻塞数十个后续请求,形成雪崩效应。 死锁概率激增:交叉持有锁的资源增多,死锁检测成本飙升。 连接池耗尽:等待锁的会话占满连接池,触发系统级拒绝服务。 复制延迟:主从同步因事务滞后,影响读写分离架构。 三、事务范围优化的核心原则“事务应像手术刀般精准,而非钝器。” —— 笔者总结 最小化原则 黄金法则:事务代码块仅包含必须原子执行的数据库操作。 Saga 模式通过拆分全局事务为可逆子事务实现控制: Saga 执行框架 关键优势:每个子事务独立提交,锁范围缩小至单服务内。

    33521编辑于 2025-06-30
领券