谈一谈 InnoDB

  • InnoDB是MySQL的默认事务型引擎,用来处理大量短期事务

  • InnoDB的性能和自动崩溃恢复特性使得它在非事务型存储需求中也很流行,所以我们优先考虑InnoDB

  • InnoDB的数据存储在表空间中,表空间由一系列数据文件组成。MySQL4.1之后,InnoDB可以把每个表的数据和索引放在单独的文件中

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

  • InnoDB表是基于聚簇索引建立的,InnoDB的索引结构和其他的存储引擎有很大不同,聚簇索引(聚簇索引是一种数据的存储方式,它的数据行只存放在索引(B+树)的叶子中,内部节点不存放数据。)对主键查询有很高的性能,不过它的二级索引中必须包含主键列,所以如果主键很大的话,其他所有的索引都会很大,因此如果表上的索引很多的话,主键应该尽量小

  • InnoDB的存储格式是平台独立的,可以将数据和索引文件从一个平台复制到另一个平台

  • InnoDB内部做了很多优化:

    1. 包括从磁盘读取数据时候采用的可预测性预读
    2. 能够自动在内存中创建加速读操作的自适应哈希索引
    3. 能够加速插入操作的插入缓冲区
posted @ 2022-03-10 14:55  张三丰学Java  阅读(64)  评论(0编辑  收藏  举报