MySQL45讲之幻读 - flowers
本文介绍什么是幻读,幻读存在的问题和解决方式,以及间隙锁带来的困扰。 前言本文介绍什么是幻读,幻读存在的问题和解决方式,以及间隙锁带来的困扰。什么是幻读什么是幻读,有两个条件:必须是“当前读”情况下才可能发生,“快照读”不会出现只有插入操作才算幻读,更新
2024-11-16
MySQL45讲之count操作 - flowers
本文介绍 MyISAM 和 InnoDB 如何执行 count 操作,如果是一个需要使用 count 进行大量计数的场景,应该如何设计实现,以及不同 count 操作的效率。 前言本文介绍 MyISAM 和 InnoDB 如何执行 count 操作,如果
2024-11-16
MySQL45讲之order工作原理 - flowers
本文介绍 order 的三种排序方式,全字段排序、rowid 排序和索引树排序,以及每种排序方式具体是如何工作的。 前言本文介绍 order 的三种排序方式,全字段排序、rowid 排序和索引树排序,以及每种排序方式具体是如何工作的。当使用 explai
2024-11-16
MySQL45讲之更新缓存 - flowers
本文介绍MySQL的更新缓存Change Buffer,以及唯一索引和普通索引如何选择。 前言本文介绍MySQL的更新缓存Change Buffer,以及唯一索引和普通索引如何选择。唯一索引和普通索引的选择查询过程唯一索引下,查询索引树,找到第一条匹配的
2024-11-16
MySQL45讲之前缀索引 - flowers
本文介绍字符串的前缀索引优缺点,以及字符串区分度不高情况下,可以考虑如何建立索引。 前言本文介绍字符串的前缀索引优缺点,以及字符串区分度不高情况下,可以考虑如何建立索引。前缀索引对于像SELECT * FROM t WHERE email = "xxxx
2024-11-16
MySQL45讲之表空间回收 - flowers
本文介绍为什么删除了一部分表数据后,表文件大小不变,以及有哪些表空间回收的方式。 前言本文介绍为什么删除了一部分表数据后,表文件大小不变,以及有哪些表空间回收的方式。为什么删除表数据后,表文件大小不变MySQL 采用的是标记删除,需要等待后台 purge
2024-11-16
MySQL45讲之InnoDB加锁规则 - flowers
本文介绍 MySQL InnoDB 的加锁规则,以及分析加锁时,一些需要注意的点。 前言本文介绍 MySQL InnoDB 的加锁规则,以及一些需要注意的点。总结两个原则,两个优化,一个 bug:原则1:加锁的基本单位是 next-key 锁,是一个前开
2024-11-16
MySQL45讲之IO性能提升 - flowers
本文介绍 MySQL 的 binlog 和 redo log 写入机制和刷盘策略,以及如何提升 MySQL 的 IO 性能。 前言本文介绍 MySQL 的 binlog 和 redo log 写入机制和刷盘策略,以及如何提升 MySQL 的 IO 性能。
2024-11-16
MySQL45讲之InnoDB刷脏策略 - flowers
本文介绍 InnoDB 的刷脏控制策略,它是如何控制刷脏速率的,以及一些相关参数。 前言本文介绍 InnoDB 的刷脏控制策略,它是如何控制刷脏速率的,以及一些相关参数。意义了解 MySQL 的刷脏策略有什么意义?当一条正确的 SQL 执行时偶尔延迟较高
2024-11-16
MySQL45讲之保证高可用 - flowers
本文主要介绍 MySQL 主备延迟,延迟产生的原因和主备切换策略。 前言本文主要介绍 MySQL 主备延迟,延迟产生的原因和主备切换策略。主备延迟主备同步过程中时间点主要有三个:主库A执行完成一个事务,写入binlog,我们把这个时刻记为T1;之后传给备
2024-11-16
MySQL45讲之用户关注案例 - flowers
本文介绍 MySQL45 讲中提到的一个用户关注的案例,并记录下可行的处理方案。 前言本文介绍 MySQL45 讲中提到的一个用户关注的案例,并记录下可行的处理方案。业务背景业务上有这样的需求,A、B两个用户,如果互相关注,则成为好友。存在两个表,关系(
2024-11-16
MySQL45讲之查询慢或者阻塞 - flowers
本文介绍锁表和执行慢的例子,以及发生锁表时的排查方法。 前言本文介绍锁表和执行慢的例子,以及发生锁表时的排查方法。锁表1. 等MDL锁比如像 select * from t where id=1; 长时间不返回,可能是因为等 MDL 锁而阻塞。排查方法:
2024-11-16
MySQL45讲之主备数据一致性 - flowers
本文主要介绍 MySQL 主备数据同步的重要日志 binlog 的三种格式,和双 M 结构的循环复制问题。 前言本文主要介绍 MySQL 主备数据同步的重要日志 binlog 的三种格式,和双 M 结构的循环复制问题。binlog三种格式1. state
2024-11-16
MySQL45讲之优化器选错索引 - flowers
本文简要介绍优化器选择索引的依据有哪些,有什么办法人为引导优化器选择更优的执行方案。 前言本文简要介绍优化器选择索引的依据有哪些,有什么办法人为引导优化器选择更优的执行方案。为什么会出现选错索引可能是统计索引基数信息错误,导致优化器错选索引,也可能是My
2024-11-16
MySQL45讲之随机查询和临时表 - flowers
本文介绍 MySQL 随机查询的工作流程、优化随机查询的方式、和临时表。 前言本文介绍 MySQL 随机查询的工作流程、优化随机查询的方式、和临时表。工作流程根据下表结构建立 words 表,并通过过程插入 10000 条模拟数据。CREATE TABL
2024-11-16
MySQL45讲之备库并行复制策略 - flowers
本文主要介绍 MySQL 备库的并行复制策略。 前言本文主要介绍 MySQL 备库的并行复制策略。为什么备库需要并行复制如果主库有大量更新操作,因为主库可以并发写入,而备库只能单线程执行的话,那么备库的同步延迟会不断累加,即备库越来越追不上主库。所以,后
2024-11-16
MySQL45讲之生产环境下的性能问题 - flowers
本文介绍一些常见的性能问题,以及在生产环境下应该如何解决。 前言本文介绍一些常见的性能问题,以及在生产环境下应该如何解决。1. 短连接风暴当由于大量短连接造成数据库性能低时,首先考虑一些无损安全的解决方案,如果是必须立刻提升一些数据库性能,那么可以考虑下
2024-11-16
MySQL45讲之函数转换导致不使用索引 - flowers
本文介绍三种因为函数转换导致不使用索引的问题。 前言本文介绍三种因为函数转换导致不使用索引的问题。注意,不使用索引指的是不使用树搜索,而是全表扫描索引树。显式使用函数比如 select count(*) from tradelog where month
2024-11-16