MySQL进阶
文章平均质量分 90
假正经的小柴
双非也有编程梦!在读大三,是一个爱看源码的小伙.....
展开
-
【MySQL自身的性能优化】InnoDB 的 Buffer Pool
InnoDB 通过三种链表来管理缓冲页: Free List(空闲页链表),管理空闲页; Flush List(脏页链表),管理脏页; LRU List(淘汰链表),管理脏页+干净页,将最近且经常查询的数据缓存在其中,而不常查询的数据就淘汰出去。InnoDB 对 LRU 做了一些优化,我们熟悉的 LRU 算法通常是将最近查询的数据放到 LRU 链表的头部,而 InnoDB 做了以下俩点优化(当然还有很多优化点,这里阐述的是重要的俩个):将 LRU 链表分为了 You原创 2024-01-19 20:03:48 · 1153 阅读 · 0 评论 -
【B+树索引】索引的使用和注意事项
B+ 树索引在空间和时间上都有代价,所以没事儿别瞎建立索引。空间:B+ 树索引的建立,占内存的。时间:当执行增删操作的时候生成执行计划,而且还要给相关的二级索引进行增删,时间上也得付出代价滴。各人认为更好的使用索引就三点:1. 按需求为列前缀进行建立索引;2. 查询时尽量往覆盖索引上查;3. 主键最好是递增形式存在的。原创 2023-09-22 13:43:19 · 145 阅读 · 0 评论 -
【B+树索引】索引页的结构含有可以快速查询的秘密
在使用二级索引进行查找数据时,如果查询的数据能在二级索引找到,那么就是「索引覆盖」操作,如果查询的数据不在二级索引里,就需要先在二级索引找到主键值,需要去聚簇索引中获得数据行,这个过程就叫作「回表」。还有就是索引就是按说到的B+树,其各个节点对应各个页对应有着各个记录。原创 2023-09-17 11:47:57 · 144 阅读 · 0 评论 -
【MySQL进阶(三)】 InnoDB体系架构之内存池(buffer pool)
InnoDB 存储引擎是基于磁盘进行存储的,并将其中的记录按照页的方式进行管理。由于【磁盘速度】和【内存速度】相比根本不值一提,所以一般基于磁盘的数据库系统通常使用缓冲技术来提高数据库的整体性能。缓冲池简单来说就是一块内存区域。在数据库中进行读取页的操作,首先将磁盘中读到的页存放到缓冲池中,这个过程称为将页【FIX】在缓冲池中。下一次再读相同的页时,首先判断是否在缓冲池中,不再的话再读取磁盘中的页。原创 2023-07-23 08:00:00 · 950 阅读 · 2 评论 -
【MySQL进阶(二)】InnoDB存储引擎下的表的逻辑存储
从 InnoDB 存储引擎的逻辑存储结构上看,所有的数据都被逻辑地存放在一个空间中,称为表空间。表空间又由段(segment,如索引段、数据段、回滚段等等)、区(extent)、页(page)组成。原创 2023-07-22 08:00:00 · 119 阅读 · 0 评论 -
【MySQL进阶(一)】MySQL在Linux中的配置信息和数据备份工具
当 MySQL 启动的时候,会从安装目录中加载软件数据,即使用 mysqld 工具初始化设置的 --basedir,会从数据目录中读取数据,即设置的 --datadir。这两个目录不要放在一起,避免 rm -rf mysql安装目录 的时候数据没了。原创 2023-07-21 00:40:13 · 115 阅读 · 0 评论