网站开发vs设计报告,wordpress添加磁力下载,gowers wordpress com,企业网站设计与管理下图是MySQL#xff08;MySQL5.7版本#xff09;体系架构图 MySQL的InnoDb Buffer Pool 缓冲池是主内存中的一个区域#xff0c;用来缓存InnoDB在访问表和索引时的数据。对于频繁使用的数据可以直接从内存中访问#xff0c;从而加快处理速度。如果一台服务器专用作MySQL数据… 下图是MySQLMySQL5.7版本体系架构图 MySQL的InnoDb Buffer Pool 缓冲池是主内存中的一个区域用来缓存InnoDB在访问表和索引时的数据。对于频繁使用的数据可以直接从内存中访问从而加快处理速度。如果一台服务器专用作MySQL数据库使用时通常将70%~80%具体看总内存大小而定的物理内存空间分配给缓冲池。 缓冲池由多个缓冲池实例innodb_buffer_pool_instances组成每个实例都有自己的锁和数据结构这样可以在多线程环境中提高并发性能。缓冲池中的页可以分为干净页和脏页干净页是指与磁盘上的数据一致的页而脏页则是指已经被修改但尚未写回磁盘的页。InnoDB会定期将脏页刷新回磁盘以确保数据的持久性 1. LRU算法 LRULeast Recently Used最近最少使用是一种常见的缓存替换算法通常用于管理缓存中的数据页面。该算法基于一个简单的思想当缓存空间不足时将最近最少被访问的数据页替换出去以便为新的数据页腾出空间。 LRU算法维护一个数据结构通常是一个链表或者是一个数组用于记录数据页面的访问顺序。每当一个数据页面被访问时就将其移动到链表或数组的头部或其他适当位置表示最近被访问。当缓存空间不足时将链表或数组尾部的数据页面替换出去因为它们是最近最少被访问的。 LRU算法的优点是简单易实现并且通常能够有效地利用缓存空间保留最近被频繁访问的数据页面从而提高缓存命中率减少磁盘IO操作提升系统性能。然而LRU算法也存在一些缺点比如需要维护一个有序的数据结构当缓存数据量非常大时可能会导致性能下降。 MySQL为了提高大批量数据读取操作的效率将缓冲池划分为可以潜在地容纳多行的页面。为了提高缓存管理的效率缓冲池被实现为页面的链接列表最近很少被使用的数据会使用LRU算法的变体从缓存中淘汰出去。 2. MySQL中的LRU优化 在MySQL中针对传统的LRU算法进行了优化以解决全表扫描和预读机制可能带来的性能问题。这种优化被称为“冷热分离”它将LRU链表分为两部分一部分用于存放冷数据即最近加载但尚未被频繁访问的数据页另一部分用于存放热数据即经常被访问的数据页。这样即使进行全表扫描或预读操作也不会立即影响到那些热数据页的位置从而保持了缓冲池的高命中率和性能。 默认情况下优化后的LRU算法将5/8的缓冲池空间用于存放热数据3/8的空间用于存放冷数据冷热区域的边界叫做midpoint区。 当InnoDB将一个页面读入缓冲池时它最初会将其插入midpoint区即冷数据区的头部。此后页面可能被读取因为它是用户发起的操作例如SQL查询或作为InnoDB自动执行的预读操作的一部分。 而访问冷数据区中的页面时会将此页面变“热”进而将其移到热数据区的头部。如果页面是由于用户发起的操作而被读取的则首次访问会立即发生并且页面会变为“热”。如果页面是由于预读操作而被读取的则首次访问不会立即访问并且在页面被驱逐之前可能也永远不会被访问。 随着数据库的运行未被访问的缓冲池中的页面通过向列表的尾部移动而“老化”。随着其他页面被设置为新页面冷数据区中的页面都会老化。随着页面被插入midpoint冷数据区中的页面也会老化。最终保持未使用的页面被推向冷数据区的尾部并被驱逐。 3. 小结 MySQL使用LRU最近最少使用算法来管理其InnoDB存储引擎的缓冲池Buffer Pool因为这种算法能有效地维护缓存页的使用频率和顺序。LRU算法通过淘汰长时间未被访问的数据页确保缓冲池中存储的是最可能被再次访问的数据从而提高数据检索的效率。 在实际应用中MySQL对传统的LRU算法进行了优化以解决全表扫描和预读机制可能带来的性能问题。这种优化被称为冷热分离它将LRU链表分为两部分一部分用于存放冷数据即最近加载但尚未被频繁访问的数据页另一部分用于存放热数据即经常被访问的数据页。这样即使进行全表扫描或预读操作也不会立即影响到那些热数据页的位置从而保持了缓冲池的高命中率和性能 往期精彩回顾 1. MySQL高可用之MHA集群部署 2. mysql8.0新增用户及加密规则修改的那些事 3. 比hive快10倍的大数据查询利器-- presto 4. 监控利器出鞘PrometheusGrafana监控MySQL、Redis数据库 5. PostgreSQL主从复制--物理复制 6. MySQL传统点位复制在线转为GTID模式复制 7. MySQL敏感数据加密及解密 8. MySQL数据备份及还原一 9. MySQL数据备份及还原二 扫码关注