InnoDB存储引擎的三大特性

发布于:2025-04-08 ⋅ 阅读:(36) ⋅ 点赞:(0)

InnoDB存储引擎的三大特性

Buffer Pool

  • 原理:Buffer Poo 是InnoDB存储引擎用于缓存数据页和索引页的内存区域。他提高了数据库的读写性能,因为数据也和索引页在内存中读写比磁盘上快得多。需要访问数据时,InnoDB会在Buffer Pool 中查找,如果找不到,才会从磁盘中读取。
  • 工作方式:Buffer Pool 采用LRUL(最近最少使用)算法来管理内存中的页。当Buffer Pool 满时,最近最少使用的页会被淘汰,以便为新的页腾出空间
  • 配置参数
    • innodb_buffer_pool_size :设置Buffer Pool 的大小, 通常建议设置为物理内存的70%左右,以平衡数据库和其他系统的需求
    • innodb_buffer_pool_instances :设置Buffer Pool 的示例数量,用于减少锁竞争,提高并发性能
  • 应用场景:适用于需要频繁读写数据的场景,如事务处理、查询优化

Adaptive Hash Index

  • 原理:Adaptive Hash Index(AHI)是InnoDB存储引擎的一种内存结构,用于加速等值查询。InnoDB会自动监控索引的使用情况,如果发现某个索引频繁访问,就会在内存中为该索引创建哈希索引,减少查询时间

  • 工作方式:AHI 是一个哈希表结构,键是索引键值,值是该索引对应的页面位置。需二级索引频繁查询(固定时间内连续多次等值查询, == 号,>= 无效,order by 无效)成为热点数据会建立hash index 带来速度的提升,可通过%hash_index%查询

  • 配置参数

    • innodb_adaptive_hash_index:控制是否启用AHI,默认启用。在高并发场景下 ,如果CPU资源紧张,可以考虑禁用
    • innodb_adaptive_hash_index_partitions:设置HAI 的分区数量,增加分区数量可以减少哈希冲突,但也会增加内存的消耗。
  • 应用场景:适用于频繁的等值查询,如主键查询或唯一索引查询。在高并发读取的场景下,AHI可以减少磁盘IO,提高查询响应速度。

  • 限制

  • 只能用于等值比较,如=、<=>、IN等

    • 无法用于排序
    • 存在哈希冲突的可能性,可能导致性能下降
    • 维护AHI需要的额外内存和CPU资源

Double Write

  • 原理:Double Write 是InnoDB存储引擎用于提高数据完整性和可靠性的机制。它通过在将数据写入数据文件之前,先将他们写入以恶搞成为Double Write Buffer 的连续存储区域 ,确保数据的一致性,如果写入过程中发生了崩溃,InnoDB可以从Double Write Buffer 中恢复数据
  • 工作方式:数据页首先被写入Double Write BUffer ,然后通过两次写入操作(顺序写)将数据页写入数据文件的适当位置。这种方式可以减少I/O开销,因为数据是连续写入的。
  • 配置参数
    • innodb_double_write:控制是否启用Double Write 功能,默认是启用。但在某些性能测试场景下可以禁用。
    • innodb_doublewrite_dir:设置Double Write 文件的存储目录
    • innodb_doublewrite_files:定义Double Write 文件的数量
    • innodb_doublewrite_pages:控制每个线程的最大Double Write 页数。
  • 应用场景:适用于需要高可靠性和数据一致性的场景,如生产环境中的数据库系统

以上是关于InnoDB存储引擎的三大特性:Buffer Pool 、Adaptive Hash Index、Double Write 的详细解释。这些特性在不同的场景下各有优势,可以根据具体需求具体配置


网站公告

今日签到

点亮在社区的每一天
去签到