摘要: 现在我已经知道了,MySQL 的每行数据都存储在数据页上,那为什么需要数据页呢?实际上是为了提高数据的读取效率,把读取的指定数据所在数据页中的其他数据行都一次性写入缓存,避免频繁的磁盘 IO 读取数据。那么每行数据又是如何存储的?又如何知道数据在哪个数据页?在哪个数据区?在哪个表空间呢? 行格式 实 阅读全文
posted @ 2022-08-03 15:14 维维尼~ 阅读(57) 评论(0) 推荐(0) 编辑
摘要: MySQL 高并发场景下会使用多线程来处理请求,然后访问存储在 Buffer Pool 中的共享缓存页,多个线程访问同一个 Buffer Pool 资源必然是要加锁来进行的。虽然对数据的查询、更新等操作都是在内存中进行的,即使加锁性能也是可以的。但如果大量请求需要通过磁盘加载数据到缓存,就需要进行磁 阅读全文
posted @ 2022-08-03 15:11 维维尼~ 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 缓存淘汰 现在我知道数据页要加载到缓存,需要通过 free 链表找到一个空闲的缓存页,然后把数据写入缓存页。但是缓存页的数量是有限的,当缓存页用尽了该咋办呢?应该通过一定的机制把一些缓存页刷回磁盘,空闲一些缓存页出来。那么哪些缓存页需要被刷入磁盘呢?当然是那些不经常使用的缓存页给刷入磁盘啦,这时就需 阅读全文
posted @ 2022-08-03 15:05 维维尼~ 阅读(198) 评论(1) 推荐(0) 编辑
摘要: 脏数据页 基于 free 链表找到一块空闲的缓存页写入数据后,然后更新了这个缓存页,此时缓存页中的数据就与磁盘中的数据页不一致了,那么这个缓存页就是脏数据或者说脏页。最终在内存里更新的这些脏页是会被刷入磁盘的,但是不可能所有的缓存页都刷入磁盘,因为有些缓存页根本没有更新过。所以需要一个数据结构来保存 阅读全文
posted @ 2022-08-03 14:56 维维尼~ 阅读(94) 评论(0) 推荐(0) 编辑
摘要: Buffer pool 是 InnerDB 存储引擎的一个重要组件,MySQL 的所有 CRUD 操作都是围绕 Buffer pool 进行的。现在只知道 Buffer pool 是一个缓冲池,里面存放了磁盘数据的缓存,那么 Buffer pool 是一个什么样的结构,是如何在 SQL 执行过程中起 阅读全文
posted @ 2022-08-03 14:53 维维尼~ 阅读(158) 评论(0) 推荐(0) 编辑
摘要: SQL 语句的最终执行者是存储引擎。存储引擎在经解析器、优化器处理后被执行器调用其接口执行优化后的执行计划。MySQL 存储引擎包括 InnoDB、Myisam、Memory、Archive、CSV 存储引擎等,其中最常用也是MySQL 默认的存储引擎是 InnoDB。 写入缓冲池(Buffer p 阅读全文
posted @ 2022-08-01 16:29 维维尼~ 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 在了解 MySQL 原理之前,对我而言 MySQL 就是一个黑盒子,我写的SQL 语句通过服务发送给 MySQL 数据库,然后数据库就执行 SQL 语句,返回一些查询结果或做一些操作。然后就没然后了。。。再深入一点,就是知道某些 SQL 的写法会降低数据库执行效率,也就是需要所谓的 SQL 优化。但 阅读全文
posted @ 2022-08-01 16:19 维维尼~ 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 一、磁盘压测 磁盘的性能直接影响 MySQL 的吞吐量。磁盘的随机 IO 性能越高,刷盘速度越快。这里磁盘压测选择 fio 进行测试,fio 可以使用命令 yum install fio 安装在 linux 上,也可以在官网下载 windows 版本,使用 fio 命令进行相关测试。 1. 安装 l 阅读全文
posted @ 2022-08-01 14:48 维维尼~ 阅读(912) 评论(0) 推荐(0) 编辑
摘要: 一、添加依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency> <dependen 阅读全文
posted @ 2022-08-01 14:38 维维尼~ 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 自定义读写分离 基于 druid 连接池自定义配置做一主多从的读写分离配置,做读写分离的前提是数据库集群已做好主从同步配置。这里默认已经完成主从同步的配置,读写分离环境为: JDK:1.8+ ORM:JPA DB:MySQL 5.7+ 添加 maven 依赖 这里主要添加 MySQL 驱动依赖和 d 阅读全文
posted @ 2022-08-01 13:57 维维尼~ 阅读(183) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示