- 博客(1054)
- 收藏
- 关注

翻译 MySQL 8.4.3 和 9.1.0:显著提升性能!
MySQL 8.4.3 和 9.1.0 中的性能改进代表着向前迈出的重要一步。这些版本展示了 MySQL 开发团队在解决社区问题方面的积极参与,包括最初由 Percona 贡献的有价值的错误报告和修复。虽然仍有进一步优化的空间以达到早期版本的峰值性能,但我们对未来的版本持乐观态度,并期待在 MySQL 社区的共同努力下不断取得进步。
2025-01-13 14:20:19
204
原创 ChatDBA VS DeepSeek:快速诊断 OceanBase 集群新租户数据同步异常
通过 ChatDBA 快速诊断 OceanBase 集群故障,并且对比 DeepSeek 能力。
2025-03-26 15:24:36
718
原创 gh-ost 扩展 MySQL 字段失败?看看 ChatDBA 和 DeepSeek 都怎么说?
社区王牌专栏《一问一实验:AI 版》改版以来已发布多期(51-60),展现了在多种场景下解决问题的效果。下面让我们正式进入《一问一实验:AI 版》的第 61 期,看看 ChatDBA 最新效果以及与热门大模型 DeepSeek 的对比效果。
2025-02-10 16:21:45
639
翻译 新闻 | MySQL 9.2.0 有哪些功能新增、弃用和删除?
2025 年 1 月 21 日,MySQL 9.2.0 版本正式发布!作者:MySQL 官方文档本文约 800 字,预计阅读需要 3 分钟。根据 MySQL 版本发布计划,MySQL 9.2.0 是一个创新版,那么我们来看一下有哪些功能新增,弃用和删除。
2025-02-07 17:37:47
142
原创 OceanBase 备份清理任务卡死之谜
正常情况下,会有一个 OceanBase 备份文件清理任务定期执行。备份文件超过了预设数量,猜测可能是文件清理任务出现问题。作者:何文超,爱可生南区交付服务部 DBA 团队成员。主要负责 MySQL 故障处理,MySQL 高可用架构改造,OceanBase 相关技术支持。爱好足球,羽毛球。爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文约 1500 字,预计阅读需要 5 分钟。
2025-02-07 17:31:35
661
原创 七步定位 OceanBase 登录报错
本文将为大家总结 OceanBase 集群登录时常见报错“Access denied”的排查步骤。作者:何文超,爱可生南区交付服务部 DBA 团队成员。主要负责 MySQL 故障处理,MySQL 高可用架构改造,OceanBase 相关技术支持。爱好足球,羽毛球。爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文约 600 字,预计阅读需要 3 分钟。
2025-01-13 15:40:23
760
原创 EXPLAIN TYPE 列的 JOIN 常见场景详解(上)
专栏连载至此,相信读者们已经对一条 SQL 的优化步骤、执行计划等有了一个大概的了解。那接下来我们对 MySQL 的执行计划输出进行详细解释,以便大家对其了解的更加深入。作者:杨涛涛,爱可生技术专家。爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。我们这个标题为什么叫做EXPLAIN TYPE 列的JOIN 常见场景详解呢?从MySQL 优化器的角度来看,所有SQL都是JOIN查询(单表检索可以看成过滤字段和主键做JOIN的特殊类型)。
2025-01-06 14:10:51
904
原创 MySQL 分配 Undo 段
获得回滚段的互斥量。从缓存链表()的头部获取一个 Undo 段。如果获取到了,从缓存链表中移除 Undo 段。如果没有获取到,创建新的 Undo 段。Undo 段插入到回滚段的或者链表头部。释放回滚段的互斥量。
2025-01-06 13:43:41
698
原创 Undo 表空间分配回滚段
用户临时表的 Undo 表空间只有一个,默认位于 ibtmp1 文件中。分配回滚段时,从第二个回滚段开始,依次分配,分配到最后一个回滚段之后,后面就从一个回滚段开始,循环往复。用户普通表的 Undo 表空间有多个。分配回滚段时,依次分配每个 Undo 表空间中的 0 号回滚段,然后依次分配每个 Undo 表空间中的 1 号回滚段。依此类推,分配完所有 Undo 表空间的最后一个回滚段之后,重复前面的过程。
2025-01-06 13:36:43
1040
原创 MySQL 如何插入记录的 Undo 日志?
Undo 模块的第二篇,聊聊插入记录产生的 Undo 日志格式。作者:操盛春,爱可生技术专家,公众号『一树一溪』作者,专注于研究 MySQL 和 OceanBase 源码。爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文基于 MySQL 8.0.32 源码,存储引擎为 InnoDB。
2025-01-06 13:22:52
1043
原创 一文搞定 OceanBase 各级别数据量统计
OceanBase 是一个多租户的分布式数据库,统计数据量时需要考虑一台服务器上可能会有多个租户,每个租户会有多个副本。此外 OceanBase 中磁盘上的数据文件是预分配的,当我们统计数据量大小时,得找出真实数据占用的大小。本文将总结在 OceanBase 中统计数据量大小的技巧,旨在扫清这方面的迷雾。
2024-12-19 17:22:56
971
原创 ChatDBA 如何解决 OceanBase 4013 错误?
内存限制:如 OceanBase 为每个租户设置了内存限制,超出限制时会出现内存不足错误。数据库配置不当:内存相关参数设置过低(如或查询或操作占用过多内存:复杂查询、大批量插入或更新可能消耗大量内存。连接数过多:过多的并发连接或连接泄漏导致内存耗尽。内存泄漏:数据库或应用程序存在内存泄漏问题。系统资源限制:操作系统对进程的内存限制或物理内存不足。数据量过大:数据库数据量增长未及时优化,导致内存需求激增。磁盘 I/O 问题:磁盘性能瓶颈可能影响内存释放和使用。内存碎片。
2024-12-19 17:19:02
1150
原创 EXPLAIN:解说一条简单 SQL 语句的执行计划
在MySQL里,当通过各种手段抓取到影响系统性能的慢SQL语句后,此刻想知道这条SQL语句为何会慢的答案。作者:杨涛涛,爱可生技术专家。爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。在MySQL里,当通过各种手段抓取到影响系统性能的慢SQL语句后,此刻想知道这条SQL语句为何会慢的答案。通过以上三种方式审阅后,是否需要反馈给业务方来修改SQL语句的逻辑或者说是变更SQL 语句涉及到的表结构。
2024-12-12 13:11:53
813
原创 学习 MySQL 必须了解的几个 Undo 概念
Undo 表空间管理回滚段、回滚段管理 Undo 段、Undo 段管理 Undo 页、Undo 页管理 Undo 日志。InnoDB 支持 2 ~ 127 个表 Undo 表空间,每个 Undo 表空间支持 128 个回滚段,总共支持 256 ~ 16256 个回滚段。每个回滚段管理 1024 个 Undo 段,总共支持 262144 ~ 16646144 个 Undo 段。只考虑 Undo 段的数量限制,127 个 Undo 表空间最多、最少支持同时执行多少个读写事务?
2024-12-11 16:21:00
788
原创 MySQL insert on duplicate 加锁分析(1)
insert on duplicate key update 语句,新插入记录和主键索引中已有记录冲突,可重复读和读已提交两个隔离级别下,加锁流程和加锁结果相同。如果主键索引中和新插入记录冲突的那条记录已经被标记删除了,但是执行标记删除操作的事务还没有提交,加锁情况会有什么变化?欢迎评论区留言交流。
2024-12-10 14:27:31
982
原创 MySQL insert on duplicate 加锁分析(3)
没有需要总结的内容了。有一个问题,可重复读隔离级别下,insert 语句对刚刚插入到主键索引中<id = 7>的记录加了排他间隙锁,为什么不是加排他 Next-Key 锁?换句话说,就是为什么只锁定这条记录前面的间隙,而不锁定这条记录本身。欢迎评论区留言交流~
2024-12-10 14:13:57
711
原创 关于 OceanBase 4.2.x 新增副本随机拉取问题的解决方案
综上,OceanBase 4.2.1.4 版本在为租户新增副本时,拉取数据在选择数据源时存在随机性,可能发生“舍近求远”的问题。
2024-12-09 14:12:43
716
原创 MySQL 死锁案例分析(1)插入意向锁
没有其它事务在等待获得这条记录的锁,事务 1 想要往这条记录前面的间隙插入记录,不需要等待获得插入意向锁,可以直接插入记录。其它事务在等待获得这条记录的锁,事务 1 想要往这条记录前面的间隙插入记录,需要等待其它事务获得并释放锁之后,事务 1 才能获得插入意向锁,然后才能往这个间隙插入记录。
2024-12-02 14:25:59
654
原创 MySQL 主键索引范围查询加什么锁?
可重复读隔离级别下,对某条记录加了锁,要等到事务提交或者回滚时才释放。读已提交隔离级别下,对某条记录加了锁,如果 server 层或者 InnoDB 发现记录不匹配 where 条件,会马上释放锁。
2024-12-02 14:07:47
1013
原创 MySQL 主从复制过滤新增库表过滤方案
需要对从库 SQL 线程指定 UNTIL SQL_AFTER_GTIDS 方式,将从库的事务回放追平到备份文件中记录的事务点,保持从库的回放 GTID 和备份中记录的一致,这样才能正常衔接。目的是为了避免在主库做新增库备份时,备份中记录的 GTID 在从库已经被应用过,导致备份还原时,数据重复。文档中只是演示了库级的复制过滤添加,表级别的操作方式基本相同,只是针对不同库下不同表,不能同时备份(如图所示,需要将原有的主从复制过滤的配置再新增几个库做同步,需要考虑一个效率最高的方式。
2024-12-02 14:01:54
1002
原创 Oracle 迁移到 OB_oracle4版本不兼容DDL语法
本文将总结 Oracle 迁移到 OB 4.x 过程中,那些还不兼容的 DDL 语法。作者:夏彬胜,爱可生 DBA 团队成员,熟悉 OceanBases,Oracle 等数据库。想到和得到,中间还有个做到爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文约 900 字,预计阅读需要 3 分钟。将 Oracle 数据迁移至 OceanBase(Oracle 模式)可以通过 OMS 或 DSG 等工具。
2024-11-19 15:53:15
1098
原创 ChatDBA | OceanBase NTP 时钟不同步的问题排查?
如果 NTP 服务无法启动,可能是因为配置文件中指定的 NTP 服务器地址不正确或无法访问。例如,如果 ntpdate 服务尝试使用的服务器不是 ntp.conf 文件中配置的 Server 地址,就会导致服务启动失败。如果 NTP 服务报告无法找到主机,可能是因为 DNS 解析问题。例如,日志中显示 Can't find host 0.kylin.pool.ntp.org: Name or service not known,这表明 NTP 尝试使用的服务器地址无法被解析。
2024-11-19 14:38:50
660
原创 MySQL 8.0 中多字段虚拟列引发的宕机
一个客户的数据库(MySQL 8.0.27)随机性的崩溃。通过错误日志我们可以看到是: 由一个 SELECT 查询导致的。表结构CREATE TABLE `t` (`id` int,
2024-11-07 17:05:12
781
原创 Oracle 迁移到 OB 过程中的函数改造案例
作者:杨敬博,爱可生 DBA 团队成员,一位会摄影、会铲屎、会打球、会骑车、生活可以自理的 DBA。审校及补充:胡呈清,官永强,程柳润。爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文约 1300 字,预计阅读需要 4 分钟。
2024-11-07 16:57:37
962
原创 【建议收藏】数据库源码学习调试利器之 CGDB
是一个基于文本界面的GDB前端,主要用于在终端中提供更丰富的用户界面,CGDB 使用Curses 库创建了一个简单的功能界面,帮助用户更方便地使用 GDB,它在 GDB 的基础上增加了一些功能,使得调试过程更加直观和高效。CGDB 的运行依赖 GDB 环境,因此,在调试前必须先安装符合其版本要求的 GDB简单来说,CGDB 是 GDB 的一个前端工具,通过提供更丰富的界面来增强 GDB 的用户体验。如果更喜欢在增强型终端中操作,可以使用 CGDB 来代替 GDB。
2024-10-25 15:56:37
765
原创 哪些情况下 MySQL 配置文件会被截断?
当最后一行为!includedir类型且没有newline,会自动截断最后一个字符,所以会报错,导致初始化失败。当最后一行为!include类型且没有newline,引用的文件名会被截断一个字符导致找不到该文件,但是不会引起初始化程序 aborted。能正常初始化完成。综上所述,推荐配置文件最后需要添加上newline,否则可能导致一些异常的情况。
2024-10-09 16:06:38
796
原创 MySQL 主键索引等值查询加什么锁?
可重复读、读已提交两种隔离级别下,对主键索引字段进行等值查询,虽然都对记录加了共享普通记录锁,但是它们的加锁逻辑是不一样的。这两种隔离级别下,对唯一索引进行等值查询,加锁情况是什么样的呢?欢迎大家在评论区留言交流。
2024-09-27 13:25:38
596
原创 查询 ps.data_locks 导致 MySQL hang 住
官方在 8.0.37 中修复了这个 bug,可升级到 8.0.37 解决。作者:胡呈清,爱可生 DBA 团队成员,擅长故障分析、性能优化,个人博客:[简书 | 轻松的鱼],欢迎讨论。爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文约 1500 字,预计阅读需要 8 分钟。
2024-09-25 11:28:28
783
原创 紧急避坑 | MySQL 含有下划线的数据库名在特殊情况下导致权限丢失
在 MySQL 的授权操作中,通配符 "_" 和 "%" 用于匹配单个或多个字符的数据库对象名。然而,许多 DBA 在进行授权时可能忽视了这些通配符的特殊作用,导致数据库权限错配。这篇文章将讨论通配符误用所带来的潜在风险,并提供避免此类问题的解决方案。作者:芬达, 【芬达的数据库学习笔记】公众号作者,开源爱好者,擅长 MySQL、ansible。爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文约 3300 字,预计阅读需要 12 分钟。
2024-09-24 13:25:49
1286
原创 深入理解 MySQL 中的 SQL_MODE
SQL_MODE 是 MySQL 数据库中的一个系统变量,用于控制 MySQL 如何处理 SQL 语句和数据校验。它可以看作是一组约束和规范,确保数据的准确性、完整性和一致性。例如,可以控制如何处理无效日期、是否允许插入不完整的记录、是否区分大小写等。完成不同严格程度的数据校验,有效地保障数据准确性。保证大多数 SQL 符合标准的 SQL 语法,这样应用在不同数据库之间进行迁移时,则不需要对业务 SQL 进行较大的修改。在不同数据库之间进行数据迁移之前,通过设置 SQL_MODE。
2024-09-10 13:25:28
2187
原创 DBA 的 AI 助手 | MySQL 清理 undo log 居然用了 10 个小时?
在该问题中,通过排查发现 undo log 过了 10 个小时依然没有清理完,正常情况下不会出现该情况,而是由于参数 super_read_only 触发的 bug 导致的。可以通过调大参数,undo log 大小达到阈值前被 purge 掉,这样空间可以重用,很难达到阈值,所以不会触发 undo log truncate,所以也就不会触发 bug 导致问题。问题原文。
2024-09-09 16:27:32
1101
原创 MySQL 插入记录,主键索引冲突加什么锁?
没有需要总结的内容了。事务 247911 提交或者回滚之后,加锁情况是什么样的?为什么会这样?欢迎大家评论区留言交流。
2024-09-04 13:30:54
723
原创 回顾 Oracle 在 MySQL 8.0 中的管理工作
对于新兴技术而言,社区管理并不难。经过 29 年的发展,MySQL 已成为全球数百万用户最常使用和最信赖的开源数据库之一。管理如此规模的社区可能非常复杂。我们努力在稳定性和创新性之间找到平衡,为客户提供稳定且可预测的平台,并为技术用户创建新功能。Oracle 通过投资于工程、社区和市场对该技术的采用,持续提供对 MySQL 社区的管理和领导。作者:Frederic Descamps,EMEA 和亚太地区的 MySQL 社区经理。于 2016 年 5 月加入 MySQL 社区团队。
2024-09-02 16:36:20
731
原创 回顾 Oracle 在 MySQL 8.0 中的管理工作
对于新兴技术而言,社区管理并不难。经过 29 年的发展,MySQL 已成为全球数百万用户最常使用和最信赖的开源数据库之一。管理如此规模的社区可能非常复杂。我们努力在稳定性和创新性之间找到平衡,为客户提供稳定且可预测的平台,并为技术用户创建新功能。Oracle 通过投资于工程、社区和市场对该技术的采用,持续提供对 MySQL 社区的管理和领导。作者:Frederic Descamps,EMEA 和亚太地区的 MySQL 社区经理。于 2016 年 5 月加入 MySQL 社区团队。
2024-09-02 16:35:41
1092
ActionDB 产品技术白皮书
2023-10-08
SQL 审核工具:SQLE v2.2308 用户手册
2023-10-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人