//

Information for details

InnoDB的概述

InnoDB的数据存储在表空间中,表空间是由InnoDB管理的一个黑盒子,由一系列的数据文件组成。在MySQL4.1以后的版本中,InnoDB可以将每个表的数据和索引存放在单独的文件中。InnoDB也可以使用裸设备作为表空间的存储介质,但现代的文件系统使得裸设备不再是必要的的选择。

InnoDB采用MVCC来支持高并发,并且实现了四个标准的隔离级别。其默认级别是REPEATABLE READ,并且通过间隙锁策略防止幻读的出现。间隙锁使得InnoDB不仅仅锁定查询涉及的行,还会对索引中的间隙进行锁定,以防止幻影行的插入。

InnoDB表示基于聚簇索引建立的,我们会在后面的讲解详细讨论聚簇索引。InnoDB的索引结构和MySQL的其他存储引擎有很大的不同,聚簇索引对主键查询有很高的性能。不过它的二级索引中必须包括主键列,所以如果主键列很大的话,其他的索引索引都会很大。因此。若表上的索引较多的话,主键应当尽可能的小,InnoDB的存储格式是平台独立的,也就是说可以将数据和索引文件从Intel平台复制到PowerPC 或者Sun SPARC平台。

InnoDB内部做了很多优化,包括从磁盘读取数据时采用的可预测行预读,能够自动在内存中创建hash索引以加速读取操作的自适应哈希索引,以及能够加速插入操作的插入缓冲区等。

InnoDB的行为是非常复杂的,不容易理解。如果使用InnoDB的引擎,我建议阅读官方手册中的InnoDB的MVCC架构带来的一些微妙和细节之处是非常有必要的。存储引擎要为所有用户甚至包括修改数据的用户维持一致性的视图,是非常复杂的工作。

作为事务性的存储引擎,InnoDB通过一些机制和工具支持真正的热备份,Oracle提供的MySQL Enterprise Backkup,Percona提供的开源的XtraBackkup都可以做到这一点。MySQL的其他引擎不支持热备份,要获取一致性视图需要停止对所有表的写入,而在读写混合场景中,停止写入可能意味着停止读取。

云南然成科技有限公司是一家定位于高端网站建设、系统开发、APP开发、软件定制的高新科技公司。我们的团队成员曾来自不同行业,拥有不同背景,公司成立之前,都在互联网行业从事相关工作多年,一直奋斗在APP开发、微信开发、系统开发、商城网站开发第一线。多年的累积是一种财富,我们擅于运用所知所得诠释他们眼中的认知,更善于站在客户的立场上去思考,跨界创新,整合设计。


  • 滇公网安备 53010202001388号