1. InnoDB介绍
InnoDB是一个高可靠,高性能的多用途数据库存储引擎。在MySQL5.7中InnoDB是默认使用的存储引擎,当然,你可以配置其它存储引擎,比如没有通过ENGINE设置为InnoDB的建表语句。
InnoDB的关键特性
列举以下重要几点:
DML操作在ACID模式下执行(插入,更新,删除操作,要注意的是查询操作有时候也可能认为是DML操作,如select * from table for update),也就是关于事务的提交,回滚,故障恢复。
聚集索引,InnoDB会根据表的主键在数据存储的时候对数据进行排序以减少通过主键查询时的I/O。每一个InnoDB表的主键就是一个聚集索引
InnoDB特性
Storage limits 存储限制 |
64TB |
Transactions 事务 |
Yes |
Locking granularity 锁粒度 |
Row |
MVCC 多版本并发控制 |
Yes |
Geospatial data type support 地理坐标数据类型支持 |
Yes |
Geospatial indexing support 坐标索引支持 |
Yes[a] |
B-tree indexes B-tree 索引 |
Yes |
T-tree indexes T-tree 索引 |
No |
Hash indexes 哈希索引 |
No[b] |
Full-text search indexes 全文索引 |
Yes[c] |
Clustered indexes 聚集索引 |
Yes |
Data caches 缓存 |
Yes |
Index caches 索引缓存 |
Yes |
Compressed data 压缩功能 |
Yes[d] |
Encrypted data[e] 加密功能 |
Yes |
Cluster database support 集群支持 |
No |
Replication support[f] 复制支持 |
Yes |
Foreign key support 外键支持 |
Yes |
Backup / point-in-time recovery[g] 时间点恢复 |
Yes |
Query cache support |
Yes |
Update statistics for data dictionary 更新静态字典数据 |
Yes |
一些特性说明: [a] 在MysqL5.7.5以及更高的版本中InnoDB 支持地理位置。 [b] InnoDB 在自适应哈希索引内部使用哈希索引。 [c] 在MysqL 5.6.4 以及更高的版本中InnoDB 支持全文索。 [e] 通过加密函数实现。 [f] 支持,但不是在引擎级别实现。 [g] 支持,但不是在引擎级别实现。. |
各种存储引擎的对比将在后面的章节中详细列出。
1.1 为什么要选择InnoDB
选择InnoDB的理由如下:
如果你的服务器由于硬件或软件的问题而崩溃,你不用考虑数据库当时发生的事情,也不需要你在数据库重新启动后做任何特殊处理。InnoDB的故障恢复机制会自动帮你完成所有在故障发生前的提交,另外,对没有提交的动作不做任何操作。
InnoDB存储引擎对于访问的数据在内存中持有一个缓存表数据和索引的缓存池,用户的一些查询可以从内存中的缓存池中直接返回数据。这种缓存方式适用于很多提高处理速度的场景。在一台专用的数据库服务器上,InnoDB缓存池的内存占用通常都高于总内存的80%。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。