什么是InnoDb呢?
InnoDb是数据库Mysql的引擎之一,也是Mysql的默认存储引擎。它可以兼顾高可靠性和高性能。
InnoDb的最大特色就是支持ACID兼容的事务(Transation)功能
什么是ACID呢?
A:代表Atomicity原子性,意味着事务是不可分割的,一个事务要么全部完成,要么退回全部不完成
C:代表Consistency一致性,意味着事务从开始到结束数据库的完整性都没有被破坏
I:代表Isolation隔离性,意味着事务之间互不影响,数据库允许多个事务并发执行读写操作,隔离性防止了事务并发执行期间因为数据交叉而导致数据不一致。
D:代表Durability持久性,事务处理结束后,对数据的修改是永久的,即使系统故障也不会消失。
InnoDb聚集索引(clustered index):按照表的主键构建一棵B+树,叶子存放表的行为记录数据,聚集索引的叶子节点称为数据页。同B+数据结构一样,每个数据页都通过一个双向链表来进行链接。
数据页只能按照一颗B+树进行排序,因此每张表只能又有一个聚集索引。
使用聚集索引的优点:它对于主键的排序查找和范围查找速度非常快;
InnoDb辅助索引(Secondary Index,也称非聚集索引):叶子节点并不包含行记录的全部数据。叶子节点除了包含键值以外,每个叶子节点中的索引行中还包含了一个书签(bookmark),该书签用来告诉InnoDb存储引擎那里可以找到与索引相对应的行数据。
辅助索引的存在并不影响数据在聚集索引的组织,因此每张表上可以有多个辅助索引。
笔者经验有限,如果文章有问题,欢迎指出。感谢~