MySQL的基本架构大体可以分为server层和存储引擎层,逻辑架构图如下: Server层除了图中显示的,还包括所有的内置函数(包括日期.时间.数学和加密函数等),存储过程.触发器.视图等跨存储引擎的功能都在这层实现. 存储引擎层负责数据的存储和提取,支持InnoDB.MyISAM.Memory等,从MySQL 5.5.5版本开始InnoDB成为默认的存储引擎. 连接器 连接器负责跟客户端建立连接.获取权限.维持和管理连接.数据库里面的连接分为长连接和端连接,和tcp的连接类似.长连接过多会占…
极客时间 Mysql实战45讲 04讲深入浅出索引(下)极客时间 笔记体会: 回表:回到主键索引树搜索的过程,称为回表覆盖索引:某索引已经覆盖了查询需求,称为覆盖索引,例如:select ID from T where k between 3 and 5在引擎内部使用覆盖索引在索引K上其实读了三个记录,R3~R5(对应的索引k上的记录项),但对于MySQL的Server层来说,它就是找引擎拿到了两条记录,因此MySQL认为扫描行数是2最左前缀原则:B+Tree这种索引结构,可以利用索引的"最左前…
极客时间 Mysql实战45讲 07讲行锁功过:怎么减少行锁对性能的影响笔记 极客时间极客时间 Mysql实战45讲 07讲行锁功过:怎么减少行锁对性能的影响笔记 极客时间 笔记体会: 方案一,事务相对较长,则占用锁的时间较长,会导致其他客户端等待资源时间较长.方案二,串行化执行,将相对长的事务分成多次相对短的事务,则每次事务占用锁的时间相对较短,其他客户端在等待相应资源的时间也较短.这样的操作,同时也意味着将资源分片使用(每次执行使用不同片段的资源),可以提高并发性.方案三,人为自己制造锁竞争…
极客时间 Mysql实战45讲 04讲深入浅出索引 极客时间(上)读书笔记  笔记体悟 1.索引的作用:提高数据查询效率2.常见索引模型:哈希表.有序数组.搜索树3.哈希表:键 - 值(key - value).4.哈希思路:把值放在数组里,用一个哈希函数把key换算成一个确定的位置,然后把value放在数组的这个位置5.哈希冲突的处理办法:链表6.哈希表适用场景:只有等值查询的场景7.有序数组:按顺序存储.查询用二分法就可以快速查询,时间复杂度是:O(log(N))8.有序数组查询效率高,更新…
参考极客时间专栏<MySQL实战45讲>学习笔记 一.基础篇(8讲) MySQL实战45讲学习笔记:第一讲 MySQL实战45讲学习笔记:第二讲 MySQL实战45讲学习笔记:第三讲 MySQL实战45讲学习笔记:第四讲 MySQL实战45讲学习笔记:第五讲 MySQL实战45讲学习笔记:第六讲 MySQL实战45讲学习笔记:第七讲 MySQL实战45讲学习笔记:第八讲 二.实践篇-索引(8讲) MySQL实战45讲学习笔记:第九讲 MySQL实战45讲学习笔记:第十讲 MySQL实战45讲学…
MySQL实战45讲 目录 MySQL实战45讲 第八节: 事务到底是隔离的还是不隔离的? 在MySQL里,有两个"视图"的概念: "快照"在MVCC里是怎么工作的? 我们继续看一下图1中的三个事务,分析下事务A的语句返回的结果,为什么是k=1. 更新逻辑 事务的可重复读的能力是怎么实现的? 小结 第九节: 普通索引和唯一索引,应该怎么选择? 查询过程 更新过程 change buffer的使用场景 索引选择和实践 change buffer 和 redo log…
Mysql实战45讲 极客时间 读书笔记 Mysql实战45讲 极客时间 读书笔记 笔记体会: 根据加锁范围:MySQL里面的锁可以分为:全局锁.表级锁.行级锁 一.全局锁:对整个数据库实例加锁.MySQL提供加全局读锁的方法:Flush tables with read lock(FTWRL)这个命令可以使整个库处于只读状态.使用该命令之后,数据更新语句.数据定义语句和更新类事务的提交语句等操作都会被阻塞.使用场景:全库逻辑备份.风险:1.如果在主库备份,在备份期间不能更新,业务停摆2.如果在…
一.本节概况 MySQL实战45讲学习笔记:自增主键为什么不是连续的?(第39讲) 在第 4 篇文章中,我们提到过自增主键,由于自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧凑. 之前我见过有的业务设计依赖于自增主键的连续性,也就是说,这个设计假设自增主键是连续的.但实际上,这样的假设是错的,因为自增主键不能保证连续递增. 今天这篇文章,我们就来说说这个问题,看看什么情况下自增主键会出现 “空洞”? 为了便于说明,我们创建一个表 t,其中 id 是自增主键字段.c 是唯…
<MySQL实战45讲>笔记 目录 <MySQL实战45讲>笔记 第一节: 基础架构:一条SQL查询语句是如何执行的? 连接器 查询缓存 分析器 优化器 执行器 第二节:日志系统:一条SQL更新语句是如何执行的? 重要的日志模块:redo log 重要的日志模块:binlog 两阶段提交 总结 第三节:03.事务隔离:为什么你改了我还看不见? 隔离性与隔离级别 事务隔离的实现 事务的启动方式 如何避免长事务 第四节: 深入浅出索引(上) 第五节: 深入浅出索引(下) 第六节: 全局…
拜读了林晓斌大佬的<MySQL实战45讲>,特意做个知识点总结,以便后期回忆. 01.基础架构:一条SQL查询语句是如何执行的? Server 层包括连接器.查询缓存.分析器.优化器.执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期.时间.数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程.触发器.视图等.而存储引擎层负责数据的存储和提取.其架构模式是插件式的,支持 InnoDB.MyISAM.Memory 等多个存储引擎.现在最常用的存储引擎是…