首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
MySQL
一树一溪
创建于2022-03-04
订阅专栏
研究 MySQL 源码,了解 MySQL 各种 SQL 的执行过程
等 9 人订阅
共22篇文章
创建于2022-03-04
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
MySQL server 层和存储引擎层是怎么交互数据的?
本文介绍 server 层触发存储引擎读取一条记录之后,存储引擎怎么把数据返回给 server 层。
MySQL 大对象(BLOB)和字符串的分身术
本文介绍了 MySQL 中,text、blob、json 都属于大对象,char、binary 都属于定长字符串,varchar、varbinary 都属于变长字符,源码实现中是怎么区分这些类型的。
insert ... on duplicate key update 和 replace into
本文介绍了 insert ... on duplicate key update 和 replace into 语句执行成功后影响行数的计算逻辑,以及分析了这两种 SQL 插入记录的执行过程。
count(distinct) 玩出了新花样
本文介绍了 count(distinct) 为什么选择只使用红黑树去重,对去重和分组计数过程进行了详细分析,以及对比了和 sum(distinct)、avg(distinct) 的不同之处。
临时表和文件排序实现 group by
本文主要分析了使用临时表 + 文件排序、只使用文件排序实现 group by 的过程,以及文件排序在这两种实现方式中的含义。
你好奇过 MySQL 内部临时表存了什么吗?
本文介绍了内部临时表会包含什么字段?在哪些字段上建索引?怎么选择存储引擎?临时表存储引擎什么时候变为 MyISAM 或 InnoDB?特殊情况下临时表中记录的唯一性怎么保证?
InnoDB B-TREE 索引怎么计算 WHERE 条件范围内有多少条记录?
接上一篇,介绍 WHERE 条件命中索引的情况下,评估使用索引执行成本的过程中,怎么计算 WHERE 条件扫描区间内覆盖的记录数量。
InnoDB B-TREE 索引怎么定位一条记录?
本文以定位查询语句 WHERE 条件对应的扫描区间的第一条记录为例,详细分析了 InnoDB B-TREE 索引中定位一条记录的过程,以及 InnoDB 对于定位过程的优化方案。
Redo 日志无锁化设计并发写入 log buffer
MySQL 8.0 中,多个线程往 log buffer 中写入 Redo 日志,使用了无锁化设计实现并行写入,并且 log buffer 中的日志写入日志文件、刷盘都使用了独立线程。
MySQL 不相关子查询怎么执行?
子查询系列正式的第一篇文章,介绍不相关子查询的逻辑,以及写这类 SQL 时最佳实践。这个系列会有很多篇文章。
where field in(...) 是怎么执行的?
本文介绍不包含子查询的 in 条件,判断和记录是否匹配的两种方式,以及需要进行的准备工作,这是子查询系列的预热篇。
MySQL 连接怎么保活?
本文介绍了数据库连接保活的原理(wait_timeout 超时逻辑)和 2 种保活方式,以及对比了这 2 种保活方式的执行效率。
MySQL 8.0 数据字典表
MySQL 8.0 对数据字典进行了重构,最重要的改变就是数据字典表被 InnoDB 大一统了,由此带来的好处就是 DDL 不会半途而废变成四不像了。
MySQL 崩溃恢复
MySQL 崩溃恢复的核心工作是应用 Redo 日志把数据页恢复到崩溃之前的最新状态,以及从 undo 日志中读取未完成事务的信息,并根据事务状态进行清理、提交、回滚等操作。
MySQL 事务二阶段提交
二阶段提交的核心逻辑是把多个事务的 Redo 日志合并刷盘,把多个事务的 binlog 日志合并刷盘,从而把少量数据多次 IO 变为更大数据更少 IO,最终达到提升事务提交效率的目标。
Undo 日志用什么存储结构支持无锁并发写入?
undo 日志承担着多重职责,需要为 MVCC 和数据一致性服务。本文从存储结构、写入 undo 日志文件、二阶段提交三个方面介绍了 undo 日志。
MySQL 查询语句是怎么执行的(总结篇)?
查询语句执行过程涉及的环节比较多,整个执行过程拆分为 6 篇进行介绍,本文对查询语句执行过程各阶段进行概括性总结,方便大家对执行过程有个整体的了解。
MySQL 查询语句的 limit, offset 是怎么实现的?
本文介绍 MySQL查询语句的 limit, offset 源码实现,以及写了点关于分页的最佳实践。
MySQL 怎么使用索引实现 group by?
以 avg()、min() 为例介绍了紧凑索引扫描、松散索引扫描实现 group by 的过程。MySQL 怎么选择两种索引扫描方式,松散索引扫描的变种等
带你一步一步深入了解 MySQL 文件排序
本文介绍了文件排序的三种排序模式,源码中提升排序执行效率的两种优化方案,内部排序的三种排序算法,外部排序过程中多路归并排序的过程,倒序排序的实现,以及通过 optimizer trace 查看排序过程
下一页