InnoDB内存结构
- 使用InnoDB表的好处
- 您可能会InnoDB因为以下原因而发现表格有益:如果服务器由于硬件或软件问题而崩溃,无论当时数据库中发生了什么,重新启动数据库后都无需执行任何特殊操作。InnoDB崩溃恢复会自动完成崩溃之前已提交的所有更改,并撤消正在处理但尚未提交的所有更改。只需重新启动,然后从上次中断的地方继续即可。该InnoD
- 验证InnoDB是默认存储引擎
- 发出该SHOW ENGINES语句以参见可用的MySQL存储引擎。寻找DEFAULT在InnoDB行。mysql>SHOWENGINES;或者,查询INFORMATION_SCHEMA.ENGINES表。mysql>SELECT*FROM INFORMATION_SCHEMA.ENGIN
- 使用InnoDB进行测试和基准测试
- 如果InnoDB不是默认存储引擎,则可以InnoDB通过重新启动--default-storage-engine=InnoDB命令行中定义的服务器或 MySQL服务器选项文件部分中default-storage-engine=innodb定义的服务器,来确定数据库服务器或应用程序是否可以正常使用[m
- InnoDB和ACID模型
- 该ACID模式是一组数据库设计原则强调的是,对于业务数据和关键任务应用重要的可靠性方面。MySQL包含诸如InnoDB存储引擎严格遵循ACID模型,因此数据不会损坏,结果不会因软件崩溃和硬件故障等异常情况而失真。当您依赖于ACID的功能时,您无需重新发明一致性检查和崩溃恢复机制。如果您有其他软件保护
- InnoDB多版本
- InnoDB是一个多版本存储引擎:它保留有关已更改行的旧版本的信息,以支持诸如并发和回滚之类的事务功能。该信息以称为回滚段的数据结构存储在表空间中(在Oracle中类似的数据结构之后)。InnoDB使用回滚段中的信息来执行事务回滚中所需的撤消操作。它还使用该信息来构建行的早期版本,以实现一致的读取。
- InnoDB架构
- 下图显示了组成InnoDB存储引擎体系结构的内存中和磁盘上的结构。有关每种结构的信息,请参见“ InnoDB内存结构”和“ InnoDB磁盘结构”。图15.1 InnoDB架构
- InnoDB缓冲池
- 缓冲池是主内存中的一个区域,在InnoDB访问表和索引数据时会在其中进行高速缓存。缓冲池允许直接从内存中处理经常使用的数据,从而加快了处理速度。在专用服务器上,通常将多达80%的物理内存分配给缓冲池。为了提高大容量读取操作的效率,缓冲池分为多个页面,这些页面可以潜在地容纳多行。为了提高缓存管理的效率
- InnoDB更改缓冲区
- 更改缓冲区是一种特殊的数据结构,当二级索引页不在缓冲池中时,这些高速缓存将缓存这些更改。当页面通过其他读取操作加载到缓冲池中时,可能由INSERT,UPDATE或DELETE操作(DML)导致的缓冲更改将在以后合并。图15.3更改缓冲区与聚簇索引不同,二级索引通常是非唯一的,并且二级索引的插入以相对
- InnoDB自适应哈希索引
- 自适应哈希索引功能可以InnoDB在不牺牲事务功能或可靠性的情况下,在工作负载和缓冲池有足够内存的适当组合的系统上,更像是内存数据库。自适应哈希索引功能由innodb_adaptive_hash_index变量启用,或在服务器启动时由禁用--skip-innodb-adaptive-hash-ind
- InnoDB日志缓冲区
- 日志缓冲区是存储区域,用于保存要写入磁盘上的日志文件的数据。日志缓冲区大小由innodb_log_buffer_size变量定义。默认大小为16MB。日志缓冲区的内容定期刷新到磁盘。较大的日志缓冲区使大型事务可以运行,而无需在事务提交之前将重做日志数据写入磁盘。因此,如果您有更新,插入或删除许多行的