分布式事务详解:从入门到精通 分布式事务的基本概念 1.1 什么是分布式事务? 分布式事务是指在分布式系统中,多个独立的服务或节点之间协同完成的一个事务操作。这个事务操作需要满足ACID特性(原子性、一致性、隔离性和持久性)。 事务原本主要局限于对单一数据库资源的访问控制,但随着架构服务化的趋势,事务的概念得到了进一步的拓展和应用。当我们将一个服务操作视为一个整体的事务时,这个服务操作应当仅涉及一个特定的数据库资源。这类事务, 开发运维 2025-06-03 贤蛋大眼萌
27 期 | 死锁(3)解决死锁 终于来到死锁检查线程的第三步,可以解决死锁了。 作者:操盛春,爱可生技术专家,公众号『一树一溪』作者,专注于研究 MySQL 和 OceanBase 源码。 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文基于 MySQL 8.0.32 源码,存储引擎为 InnoDB。 1. 选择死锁受害事务 前面介绍了死锁线程做的准备工作,以及发现死锁的过程。现在,是时候解决死 数据运维 2024-08-01 竹子爱熊猫
MySQL 核心模块揭秘 | 27 期 | 死锁(3)解决死锁 目录 1. 选择死锁受害事务 2. 计算并更新事务权重 3. 记录死锁日志 4. 唤醒死锁受害事务 5. 总结 正文 1. 选择死锁受害事务 前面介绍了死锁线程做的准备工作,以及发现死锁的过程。现在,是时候解决死锁了。 解决死锁最重要的事情,就是决定回滚死锁环中哪个事务,也就是选择哪个事务作为死锁受害事务。 选择死锁受害事务之前,还要做一件比较重要的小事,就是按照死锁环中各事务进入锁等待状态的时间 数据运维 2024-07-31 泡泡
MySQL中 XA事务解析 在数据库中,XA事务全称是 “eXtended Architecture Transaction”,即扩展架构事务。MySQL5.0.3版本开始支持 XA 分布式事务,并且只有InnoDB存储引擎支持XA事务。全局事务涉及多个本身具有事务性的操作,但所有操作都必须作为一个组成功完成,或者作为一个组合回滚。本质上,这将ACID属性“向上扩展”,以便多个ACID事务可以作为具有ACID属性的全局操作的 数据运维 2024-07-22 泡泡
Oracle 19c UNDO 使用率高 ACTIVE 占比高 UNDO表空间使用率告警,查看占用情况 active段占比很高 select tablespace_name,status,sum(bytes/1024/1024) mb from dba_undo_extents group by tablespace_name,status; 数据运维 2024-07-12 宇宙之一粟
数据库事务的四大特性: ACID 数据库事务是指作为一个不可分割的工作单元的数据库操作序列,它要么完全执行,要么完全不执行。数据库事务使得数据库从一个一致的状态转化到另一个一致的状态。那么数据库事务的四大特性分别是什么呢?事务具有ACID四个重要的特性,即原子性、一致性、隔离性和持久性。 首先,原子性是指事务中的所有操作要么全部成功执行,要么全部失败回滚。这意味着在事务执行过程中,如果发生了部分操作的失败或错误,事务会被回滚到最初 数据运维 2024-07-05 三掌柜
【mysql】の 锁机制 | 事务 | 二进制日志 | 备份还原(删库也不怕跑路了~) 1、并发控制 mysql 数据库 同一时间会有多个用户一起使用 1.1 锁机制 加锁是为了限制别人的操作,不会影响自己。 锁类型: 读锁:共享锁,也称为 S 锁,只读不可写(包括当前事务) ,多个读互不阻塞 只能读 不能写 别人也能看 写锁:独占锁,排它锁,也称为 X 锁,写锁会阻塞其它事务(不包括当前事务)的读和写 写锁 别人不可读也不可写 S 锁和 S 锁是兼容的,X 锁和其它锁都不兼容, 锁 数据运维 2024-07-04 Escape
深入理解MySQL 存储引擎 现在常用的存储引擎是InnoDB,以前常用的是MyISAM。 InnoDB 支持事务、支持行级锁、支持外键、支持崩溃后数据恢复、支持MVCC;InnoDB的锁算法:Record lock:记录锁,单个行记录上的锁Gap lock:间隙锁,锁定一个范围,不包括记录本身Next-key lock:record+gap 临键锁,锁定一个范围,包含记录本身 MyISAM 不支持事务、支持表级锁、 数据运维 2024-07-04 大白菜程序猿
23 期 | 锁等待 本文基于 MySQL 8.0.32 源码,存储引擎为 InnoDB。 1. 先排队 不管是加表锁,还是加行锁,如果不能立即获得锁,加锁事务都需要进入锁等待状态。 事务进入锁等待状态,需要用锁结构来排队。和立即获得锁时的锁结构一样,这个锁结构的各属性都已经初始化完成。不同之处在于,它被设置为等待状态。 表锁、行锁处于等待状态时,都不能共用锁结构,而是需要申请一个新的锁结构。 每个事务对象初始化时,会 数据运维 2024-07-03 大树
社区博客 | MySQL事务特性和用法 事务可以看作一个整体,里面的内容要么都执行成功,要么都不成功;不可能存在部分执行成功而部分执行不成功的情况。 泽拓昆仑Klustron数据库支持MySQL连接协议和SQL语法,在事务处理的用法方面与MySQL完全兼容,包括autocommit事务,隐式事务启动和隐式事务提交,DDL原子事务等。 原文作者:CSDN博主[程序猿进阶] 关键词:MySQL、事务处理、ACID 数据运维 2024-07-01 Escape
深入分析MySQL中事务以及MVCC的实现原理 前言 什么是事务 事务的ACID特性 A(Atomicity)-原子性 C(Consistent)-一致性 I(Isolation)-隔离性 D(Durable)-持久性 事务的管理 事务的自动提交 常用的事务控制语句 COMMIT和COMMIT WORK的区别 事务的分类 扁平事务 带有保存点的扁平事务 链事务 嵌套事务 分布式事务 事务的隔离级别 Read Uncommitted(未提交读) 数据运维 2024-06-30 三掌柜
mysql“空事务”引发的锁阻塞 日常运维中,innodb_trx视图中经常会出现running时间很长的事务,但是并没有显示sql语句,很多DBA对这类问题很困惑。 比如上图中,show processlist 查看到ID对应的session一直存在,status状态时而running时而 sleep,最后分析发现,应用程序使用 begin、start transction 启动了一个大事务,不停的轮询更新数据,大事务运行时间超 数据运维 2024-06-27 大白菜程序猿
PostgreSQL 的子事务不用太担心,做好监控告警很重要! PostgreSQL 子事务的使用的确有风险,但是,将使用控制在合理的范围内,做好监控告警也就可以放心了。 子事务过多的风险 如果 PostgreSQL 中的子事务过多,可能会导致一些风险或问题: • PostgreSQL 子事务问题: 事务 ID 增长 • PostgreSQL 子事务问题: 子事务缓存溢出 建议了解您的系统中是否使用了子事务。如果有使用,也并不意味着需要立即消除它们,这完全取决 数据运维 2024-05-30 泡泡
PostgreSQL 的事务 ID 回卷,应对措施也很简单 事务 ID 回卷 大多数人最初意识到这个问题,认为他们需要监控的问题,就是事务 ID 回卷本身,但从技术上讲,事务 ID 的耗尽才是真正的问题。PostgreSQL 在技术上能够很好地处理事务 ID 的回卷。但是,如果达到回卷点,事务 ID 会即将用完,这才是为什么回卷本身会令人担忧的原因。 检查事务 ID 耗尽 以下查询可以提供非常简单的数据,来指示问题的趋势/警报。 WITH max_age 开发运维 2024-05-17 向阳逐梦
什么是排他锁、共享锁、意向锁 共享锁 共享锁,又被称为读锁,是由读取操作所创建的一种锁。在此期间,其他用户可以同时读取数据,但在数据上未释放所有共享锁之前,任何事务均无法对其进行修改(即获取数据的排他锁)。 一旦事务T对数据A加上共享锁,其他事务只能对A再加共享锁,而无法加排他锁。获得共享锁的事务仅可读取数据,不可修改数据。 SELECT ... LOCK IN SHARE MODE; 在查询语句后增加LOCK IN SHAR 数据运维 2024-05-15 大猫
介绍下InnoDB的锁机制?你学会了吗? 在InnoDB中,锁可以分为两种级别,一种是共享锁(S锁),另一种是排他锁(X锁)。 共享锁&排他锁 共享锁又称为读锁,由读取操作创建。其他用户可以并发读取数据,但直到所有共享锁都被释放之前,任何事务都无法对数据进行修改(获得数据上的排他锁)。 如果事务T对数据A加上共享锁后,其他事务只能对A再加共享锁,而不能加排他锁。获得共享锁的事务只能读取数据,而不能修改数据。 SELECT ... LOCK 数据运维 2024-05-11 剑圣无痕
openGauss学习笔记200 openGauss 数据库运维常见故障定位案例表文件大小无变化 如果使用上面的方法清理后,表文件大小仍然无变化,确认无业务操作后,使用以下SQL查询活跃事务列表状态: select txid_current(); 使用该SQL可以查询当前的事务XID。再使用以下命令查看活跃事务列表: select txid_current_snapshot(); 如果发现活跃事务列表中有XID比当前的事务XID小时,停止数据库再启动数据库,再次使用VACUUM FULL命令对 数据运维 2024-05-10 张二河
Python 代码中的事务隔离 务隔离级别 在Python中,我们可以通过设置数据库连接的事务隔离级别来控制事务的隔离程度。常见的事务隔离级别包括: 读未提交(Read Uncommitted) 读已提交(Read Committed) 可重复读(Repeatable Read) 串行化(Serializable) 不同的事务隔离级别对应不同的并发控制机制,具体表现在以下几个方面: 脏读(Dirty Read):一个事务读取到了 开发运维 2024-05-10 大树
MySQL:关于 RR 的一些实验及拓展(二) 从简单的增删改查角度,了解了一下锁,那么从视图角度是怎样的呢? 概念 锁的类型 共享锁(S Lock):允许拥有共享锁的事务读取该行行数据。 当一个事务拥有一行的共享锁时,另外的事务可以在同一行数据也获得共享锁, 但另外 的事务无法获得同一行数据上的排他锁 排他锁(X Lock):允许拥有排它锁的事务修改或删除该行数据。 当一个事务拥有一行的排他锁时, 另外的事务在此行数据上无法获得共享锁和排它锁 数据运维 2024-05-08 醒在深海的猫