您的位置:首页 > 数据库 > MySQL

Mysql的引擎简单介绍。

2016-12-01 23:41 323 查看

Mysql自带引擎

    MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一

    InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。

    Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。重启后表结构保留,数据丢失。

    Merge:允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。

    Archive:仅支持insert、select功能,Mysql5.5后支持索引。拥有很好的压缩机制,它使用zlib压缩库,在记录被请求时会实时压缩,所以它经常被用来当做仓库使用。

    Blackhole:没有存储机制,会鹊起所有插入的数据。但是服务器会记录表的日志。所以可以用于复制数据库备份库,或者只是简单的记录日志。(不推荐)

    Federated:是访问其他Mysql服务器的一个代理。它创建一个远程Mysql服务器的客户端链接,并将查询传输到远程服务器执行。MarianDB使用它的一个改进版本叫FederatedX。

    Ndb:用于集群存储的引擎,以及分布式的、share-nothing的、容灭的、高可用的NDB数据库组合。

第三方引擎

    XtreDb:可以作为InnoDB的一个完全的替代品,性能、可测量性有提升。可以兼容读写InnoDB的数据文件,并支持InnoDB的所有查询。

    PBXT:和InnoDB相似,都支持ACID事务和MVCC。支持引擎级别的复制、外键约束,并以一种比较复杂的架构对SSB提供了合适的支持。

    Infobright:面向列的存储引擎。

社区存储引擎

    Groonga:一款全文索引引擎,号称可以提供准确而高效的全文索引。

    OQGraph:支持图操作(比如查找两点之间的最短路径)。

    Q4m:内部实现了队列操作。

    SphinxSE:为Sphinx全文索引搜索服务器提供了SQL接口。

    Spider:该引擎可以将数据切分成不同的分区,比较搞笑透明低实现了分片,并且可以针对分片执行并行查询(分片可以分布在不同的服务器上)。

    VPForMysql:支持垂直分区,通过一系列的代理存储引擎实现。垂直分区指的是可以将表分成不同的列组合,并且单独存储。但查询看到的还是一张表。该引擎和Spider的作者是同一人。

如何选择合适的引擎

        这么多存储引擎,我们怎么选择呢?其实大部分情况下,InnoDB都是正确的选择。除非用到默写InnoDB不具备的特性,并且没有其他好的办法替代否则都可以选用InnoDB引擎。比如用到全文索引,建议优先考虑InnoDB加上Sphinx的组合。而不是使用支持全文索引的MyISAM。如果不需要使用InnoDB的特性,同时其他引擎的特性能够更好地满足需求,也可以考虑一下其他存储引擎。

        如果有海量数据需要存数并处理,不妨看看greemplum。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: