OLTP 类引擎

  • Percona 的 XtraDB 是基于 InnoDB 的一个改进版本
    • 已包含在 Percona Server 和 MariaDB 中;
    • 改进点:性能、可测量性和操作灵活性
    • XtraDB 可作为 InnoDB 的完全替代品,甚至兼容可读写的 InnoDB 的数据文件,并支持 InnoDB 的所有查询。
  • 支持 ACID 事务和 MVCC的示例:PBXT
    • 支持引擎级别的复制、外键约束,并以比较复杂的架构对固态存储(SSD)提供了适当的支持。
    • 对较大值类型如 BLOB 做了优化
    • PBXT 是社区支持的存储引擎,MariaDB 包含了该引擎
  • ToKuDB 使用了分形树(Fractal Trees)的索引数据结构。
    • 与缓存无关,因此即使其大小超过内存性能也不会下降,也无内存生命周期和碎片的问题。
    • ToKuDB 是大数据结构的存储引擎,拥有很高的压缩比,可在很大的数据量上创建大量索引。
    • 适合在需要大量插入数据的分析型数据集的场景中使用。但并发性能存在一些限制。
  • RethinkDB 是为固态存储(SSD)而设计,
    • 只能追加的写时复制 B 树(append-only copyon-write B-Tree)作为索引的数据结构。

面向列的存储引擎

MySQL 是面向行,每一行的数据一起存储,查询也以行为单位处理。但在大数据量处理时,面向列的方式可能效率更高。 面向列的方式可以传输更少的数据。如果每列单独存储,压缩的效率也会更高效。

  • Infobright 是最有名的面向列存储引擎。
    • 在非常大的数据量(数十 TB)也工作良好。
    • Infobright 是为数据分析和数据仓库应用而设计的。
    • 数据高压缩,按块进行排序,每个块对应一个组元数据。
      • 处理查询,访问元数据可决定跳过该块,甚至只需要插元数据即可满足查询。
    • 不支持索引,不过在大数据量下,即使有索引,也难以发挥作用。
      • 而且快索引也是一种准索引(quasi-index)。
    • Infobright 需对 MySQL 服务器做定制,有一些修改需要适应列存储需要。
      • 若查询无法在存储层使用面向列的模式执行,则需要转换成行处理,这个过程会很慢。
    • 有社区版和商业版。
  • InfiniDB ,也有社区版和商业版。
    • 可在一组机器集群间做分布式查询,但缺乏生产环境的应用案例。

社区存储引擎

该部分内容无意义,未整理