MySQL InnoDB 架构浅析

架构

缓冲池

* InnoBD 会在缓冲池中缓存数据页和索引,为了更加高效的对缓存数据进行管理 MySQL 团队使用了
  LRU 算法的变量

* Buffer Pool LRU 算法将缓冲区按代划分,前 5/8 划分给经常被访问的数据页,后 3/8 用于缓存
  最近最少被访问的数据,当有新的数据页被加载进来时会将数据页插在 5/8 之后 3/8 之前

* 当 3/8 区域中的数据页被用户读取时,Buffer Pool LRU 算法会将数据页向前移动,随着时间的推移
  未被访问的数据页会被刷出缓冲区

* Buffer Pool 调优:
    - Buffer Pool 默认大小为 128MB 在专用服务器上 Buffer Pool 的大小应设置为服务器内存大小
      的 80%
    - 将 Buffer Pool 理解为一个对象,默认实例大小为 1,在专用服务器上 Buffer Pool 的大小应设
      设置为内存的平方或立方根
    - Buffer Pool 所使用的数据结构是链表,每个节点的大小应为数据页的整数倍
    - Buffer Pool 移动数据是慢启动的,合理设置一个窗口事件,可将真正的热点数据保留在 Buffer Pool 中
    - innodb_buffer_pool_size/innodb_buffer_pool_chunk_size 应 < 1000
  

* 设置多个 Buffer Pool 的优点?
    - 减少并发重复
    - 加快查询速度(同等速度下,短跑比长跑花费的时间更少)

更改缓冲区

* Change Buffer 和 Buffer Pool 相互独立,用于缓存二级缓存页的更改

日志缓冲区

* 日志缓冲区用于存放需要被写入日志文件的数据,该缓冲区的大小由 innodb_log_buffer_size 变量
  定义,默认大小为 16MB

* 日志缓冲区会定期的刷新到磁盘,对于大事务怎加缓冲区的大小可提升系统的整体性能

自适应哈希索引

* AHI 可以将 MySQL 在合适的负载和充足的内存的组合下,使系统表现的像一个内存数据库
* AHI 会自动观察经常被访问的索引页并自动为他们创建哈希索引
* AHI 是分区的,每一个索引页都被绑定到特定的分区,分区的大小默认为 8 最大为 512
在某些负载下,来自哈希索引的加速远超过哈希索引的监控和维护,在高负载下哈希索引会成为多数据库连接
争抢的源头,如大量的 join 操作,另外使用了 LIKE 运算符和 % 通配符的查询不会从哈希索引中受益,这种情况下
关闭哈希索引往往是最好的选择,最后,由于无法事先预测,在开启和关闭的情况下进行基准测试往往是最好的
方法
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL InnoDB引擎是MySQL数据库的一种存储引擎,它采用了多版本并发控制(MVCC)机制来保证数据的一致性和并发性能。 InnoDB架构的核心组件包括缓冲池、日志缓冲、重做日志、系统表空间和数据文件。 缓冲池是InnoDB中最重要的组件,用于缓存数据和索引页。它预先读取热点数据到内存中,加快查询速度。同时,缓冲池还使用了LRU算法来管理内存页,使得经常被访问的页能够一直保留在内存中,减少IO操作。 日志缓冲用于临时存储已经提交的事务的日志,以提高写操作的性能。它将数据改变操作记录为日志,并在事务提交时将这些操作应用到数据文件中。这种设计可以保证事务的持久性和恢复性。 重做日志是InnoDB实现事务的关键部分。它记录了数据库的所有变动,包括插入、更新和删除操作。它的作用是在需要恢复数据库状态时,通过“重做”操作应用到数据文件中。 系统表空间存储了InnoDB的元数据,包括表定义、索引、MVCC信息等。每个InnoDB表都有一个对应的表空间,用于存储此表的数据和索引。 数据文件是InnoDB存储数据和索引的主要文件,用来持久性地存储数据。它们以页为单位进行管理,每个页一般为16KB大小。 InnoDB架构还支持行级锁和MVCC机制,使得多个事务可以并发地访问数据。行级锁能够降低事务之间的冲突,从而提高并发性能。而MVCC机制则通过保存数据版本信息,可以支持读已提交、可重复读和串行化等不同的事务隔离级别。 综上所述,InnoDB架构MySQL中一种重要的存储引擎,它通过缓冲池、日志缓冲、重做日志和系统表空间等组件实现了高性能、高并发的特性。同时,它也支持行级锁和MVCC机制,提供了灵活的事务隔离级别,使得数据一致性和并发性能得到保证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值