mysql各引擎对比

MyISAM BDB Memory INNODB Archive NDB
容量限制 NO NO YES 64TB NO YES
事务支持 NO NO NO YES NO YES
锁级别 Table Page Table Row Row Row
MVCC NO NO NO YES YES YES
B-tree索引 YES YES YES YES NO YES
hash 索引 NO NO YES YES NO YES
Data caches NO NO YES YES NO YES
index caches YES NO YES YES NO YES
storage cost low low N/A high very low low
memory cost low low medium high low high
批量插入速度 hish hish hish low very high high
集群支持 NO NO NO NO NO YES
外键支持 NO NO NO YES NO NO
geospatial支持 YES NO NO NO NO YES
  • MyISAM
    不支持事务,行锁,支持全文索引,只缓存索引。可以借助myisampack工具实现的Huffman算法对数据进行压缩,压缩后数据只读但可以解压。
  • Archive
    只支持insert和select操作,支持索引。该引擎使用zlib算法对数据进行压缩,支持行锁但不支持事务,其设计的主要目的是提供高速的插入和压缩功能,多用于日志管理。
  • Memory (Heap) 存储引擎
    Memory存储引擎(之前称为Heap)将表中数据存放在内存中,如果数据库重启或崩溃,数据丢失,因此它非常适合存储临时数据。
  • InnoDB
    目前mysql的默认引擎,支持行锁、事务、外键等操作。拥有MVCC提供的安全高并发能力,实现了4种事务隔离级别
    • READ UNCOMMITTED(未提交读)
    • READ COMMITTED(提交读)
    • REPEATABLE READ(可重复读)
    • SERIALIZABLE(串行化)
      并提供了诸如插入缓冲、二次写、自适应哈希索引、预读等功能。
  • NDB
    NDB存储引擎是一个集群存储引擎,类似于Oracle的RAC,但它是Share Nothing的架构,因此能提供更高级别的高可用性和可扩展性。NDB的特点是数据全部放在内存中,因此通过主键查找非常快。
    关于NDB,有一个问题需要注意,它的连接(join)操作是在MySQL数据库层完成,不是在存储引擎层完成,这意味着,复杂的join操作需要巨大的网络开销,查询速度会很慢。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容