MySQL 架构
最近在准备给新人培训,对于DBA相关的新人,最推荐的莫过于学习官方文档,像Oracle的concept,MySQL的reference等,MySQL被Oracle收购以后,文档也越来越完整和形象,对于刚学习的新人,学习官方文档有助于跟为系统得学习。 本篇主要讲MySQL8.0InnoDB的架构。 跟其他关系型数据库一样,MySQL的架构也分为In-Memory 和On-Disk两部分。 在内存结构中,主要由4大块组成。 Buffer Pool(以下简称bp) bp在整个内存中占绝大多数,MySQL官方一般建议设置为服务器物理内存的80%。这边建议MySQL整体内存控制在80%左右,bp最好不要超过70%,不然容易OOM。理解了bp的原理,对于数据库也有差不多理解了一半了。bp主要结构是个list,用的是LRU算法的变种(least recently used)。主要用来缓存数据块(page,也叫页),mysql默认为16k,oracle为8k。如果内存达到了阈值,那么就会把最近最少使用到的page驱逐(evicted)出内存。然后把新页插入到中间位置,一般为整条list的热端5/8处。...

