sunashe
这个作者很懒,什么都没留下…
展开
-
MySQL错误码去重校验bug
给MySQL官方提bug的那些年原创 2022-10-20 21:37:32 · 435 阅读 · 1 评论 -
MySQL源码调试入门
这篇文章可以作为MySQL源码初学者的入门指导,如有雷同,纯属意外。第一步,获取MySQL源代码有如下几种方法获取MySQL源代码 官方下载,以5.7.23为例,见如下链接https://dev.mysql.com/downloads/mysql/ 或者直接执行wget https://cdn.mysql.com//Downloads/MySQL-5.7/mys......原创 2018-08-05 18:27:21 · 5233 阅读 · 0 评论 -
optimizer特性之derived_merge
文章目录MySQL optimizer特性之derived_merge1. 什么是derived table ?2. 什么是derived_merge ?3. derived_merge开启和关闭的区别4. 无法利用derived_merge的情况5. derived_merge引发的问题6. 学以致用MySQL optimizer特性之derived_merge本文主要介绍如下内容 什么......原创 2019-04-25 18:44:04 · 4277 阅读 · 1 评论 -
InnoDB undo truncate流程
文章目录参数核心数据结构class Truncate成员函数成员变量核心逻辑梳理truncate标记truncate过程MySQL 8.0引入了undo truncate机制, 允许对独立的undo tablespace进行清理操作.参数innodb_undo_log_truncatetruncate开关, 控制是否开启undo truncate功能函数trx_purge_mark_undo_for_truncate/** Iterate over all the UNDO tablesp原创 2021-04-24 09:02:05 · 659 阅读 · 0 评论 -
数据导入引发slave实例异常crash的bug定位与修复
文章目录故障表象故障复现根因挖掘bug修复/解决方案DB最近在搞迁移的事情,逻辑迁移过程中发现将数据从A集群迁移到B集群时,偶发B集群slave实例的crash。整个问题的处理过程查看故障表象故障复现直接问题分析真正的问题定位问题修复故障表象错误日志中记录了crash时的线程堆栈信息,如下:As this is a crash and something is definitely wrong, the informationcollection process might fai原创 2020-05-10 20:18:33 · 400 阅读 · 0 评论 -
mysql_free_result 如何优雅的执行
简介这个问题在我刚做mysql相关的开发工作时,困扰了很久,先来看下通过mysql提供的client API进行数据库操作的基本过程 在整个过程中的每一个阶段,都要去判断代码是否出错,但是并不是每一个地方都需要去调用mysql_free_result()操作的。逐帧分析下面我们假设在程序的各个阶段出现问题,来看下执行mysql_free_result()是否存在问题。在未...原创 2018-08-29 19:21:09 · 7483 阅读 · 1 评论 -
MySQL max_execution_time参数原理解析
MySQL max_execution_time参数解析一、参数解释说明参数max_execution_time用来控制select语句的最大执行时间,单位是毫秒,可以动态修改,分为session和global两种级别,如果设置为0的话,则证明不设限制。二、使用示例mysql> set net_read_timeout=2;Query OK, 0 rows affected (0....原创 2019-02-27 20:17:29 · 23974 阅读 · 2 评论 -
详解InnoDB内存堆
文章目录1. 内存堆的类型2. 内存堆的内部结构3. 内存堆的创建与内存块的分配过程4. 内存堆的使用5. 内存堆的释放6. 内存堆总结内存管理一直是C语言程序的一个难题。在Innodb中,并没有直接使用系统提供的malloc/free来进行动态内存的申请和释放,而是采用内存堆的形式来管理。虽然目前Innodb大部分代码都是.cc结尾,但是还是有很多代码风格是C类型的,只是某些地方对这些C代...原创 2019-12-16 23:15:38 · 576 阅读 · 1 评论 -
MySQL Query Profiling源码深度剖析
4.1 Query Profiling用法详解Query Profiling是MySQL数据库提供的一种SQL性能诊断工具, 本节通过对Profiling的简介,原理,使用方法以及案例的介绍,让读者学会如何在SQL优化的过程中,合理的去使用它。4.1.1 Query Profiling简介Query Profiling是MySQL数据库中提供的一种SQL性能诊断方法,用户可以在开启pro...原创 2019-07-08 12:21:46 · 389 阅读 · 1 评论 -
MySQL中的委托回调机制
MySQL的插件功能通过委托回调机制来实现。拿Binlog_relay_IO_delegate(委托者的一种)来讲,它有很多委托方法,比如说after_read_event,是在读取一个binlog event之后进行回调,MySQL半同步插件就跟这个委托者相关。下面来看Binlog_relay_IO_delegate中的after_read_event委托函数是如何进行回调的,详细过程如下...原创 2019-02-22 22:32:32 · 1036 阅读 · 0 评论 -
通过修改源码,让Innodb打印更多的加锁信息
在做Innodb加锁机制的分析时,需要查看各种信息,以确认当前语句的加锁情况,通常来讲,是通过show engine innodb status来进行查看,但是很多情况下,show engine innodb status显示的信息不够清晰,举个例子//表结构mysql> show create table ashe\G*************************** 1....原创 2018-09-10 14:46:49 · 403 阅读 · 0 评论 -
MySQL Server层的原子操作
看如下代码#test.ccint i=0;void* funcA(void* arg){ for(int i=0;i<10;i++) { ++i; } }void* funcB(void* arg){ for(inti=0;i<10;i--) { --i; }}int ma...原创 2020-02-04 17:54:28 · 468 阅读 · 0 评论