签到成功

知道了

CNDBA社区CNDBA社区

Mysql各存储引擎简概初识

2018-03-22 21:09 2357 0 原创 Mysql
作者: Marvinn

Mysql 存储引擎

http://www.cndba.cn/Marvinn/article/2694

InnoDB 存储引擎http://www.cndba.cn/Marvinn/article/2694http://www.cndba.cn/Marvinn/article/2694

--简概
    InnoDB面向OLTP应用,其特点是行锁涉及、支持外键并支持类似于ORACLE的非锁定读,即默认读取不产生锁

    InnoDB 存储引擎数据存放于逻辑的表空间,由存储引擎自身进行管理,4.1版本后,可将每个InnoDB存储引擎表单独存放于一个独立的ibd文件(支持裸设备 row disk 建立表空间)

--支持
    高可用:    多版本并发控制(NVCC)
    默认隔离机制:    可重复读(REPEATABLE)
    避免幻读机制:    next-key locking策略
    高性能:
        插入缓冲(insert buffer)、
        二次写(double write)、
        自适应哈希索引(adaptive hash index)、
        预读(read ahead)
--数据存储
    存储方式:    聚集(clustered)
    存储顺序:    按主键顺序存放(若未设置主键,则存储引擎自动为每行生成6字节的ROWID,并作为主键)

MyISAM 存储引擎http://www.cndba.cn/Marvinn/article/2694

--简概
    MyISAM面向OLAP应用,其特点是不支持事务、表锁设计、支持全文索引
    最大特点:    MyISAM存储引擎缓冲池只缓存(cache)索引数据、而不缓冲数据文件
        (MyISAM存储引擎只缓存索引文件,数据文件的缓存交由操作系统本身缓存)
        (5.1.23版本无论32位或64位操作系统,缓存索引的缓冲区最大只能设置4GB,而后版本,64位操作系统可支持大于4GB的索引缓冲区)

--数据存储
    存储引擎组成:    MYD与MYI两部分组成,MYD存储数据文件而MYI存储索引文件
    数据压缩算法:    赫夫曼编码静态算法(myisampack工具压缩与解压)

--支持
    存储引擎表容量:    5.0版本之前,存储引擎表默认4G,超过4G需指定 MAX_ROW 和 AVG_ROW_LENGTH 属性
                    5.0版本之后,单表默认支持256T数据

NDB 存储引擎http://www.cndba.cn/Marvinn/article/2694

--简概
    NDB存储引擎是一个集群存储引擎,类似于ORACLE RAC集群,但其两者架构不一样:
        ORACLE RAC:SHAR DISK
        Mysql NDB:    SHARE Nothing
    特点:    NDB存储引擎将数据全部存放于内存中(5.1版本后支持把非索引数据存放于磁盘),再通过主键查找(primary key lookup)速度极快,再添加NDB数据存储节点(Data Node)可线性提高数据库性能,是高可用、高性能系统

    缺点:    NDB存储引擎的表连接操作(Join)是在数据库层的,而非存储引擎内存区,这意味着复杂连接操作SQL需要耗费巨大网络开销,导致查询速度变慢

Memory 存储引擎http://www.cndba.cn/Marvinn/article/2694

http://www.cndba.cn/Marvinn/article/2694
http://www.cndba.cn/Marvinn/article/2694

--简概
    特点:    
        1、只支持表锁,并发性能较差,并且不支持TEXT和BLOB列类型,另外,存储变长字段varchar时是按照定常字段char方式存储,极大浪费内存(eBay工程已给出patch解决方案)
        2、默认使用哈希索引,而非B树

    优点:    Memory存储引擎(HEAP存储引擎)将表数据都存放于内存中,故该存储引擎速度灰常快
    缺点:
        1、数据库重启或异常宕机,存储引擎表中所有数据丢失
        2、使用Memory存储引擎作为临时表存放中间结果,若中间结果集超过存储引擎表容量设置,或者表数据库含有TEXT或者BLOB字段类型数据,MYSQL数据库会将其表转换为MyIASM存储引擎表存放于磁盘,但MyISAMc存储引擎表不缓存数据文件,所以产生的临时表,对数据库查询性能有所影响
    应用场景:
        1、用于存放临时数据的临时表
        2、数据仓库中的纬度表

Archive 存储引擎

http://www.cndba.cn/Marvinn/article/2694

--简概
    特点: 
        1、只支持INSERT以及SELECT操作(5.1版本后支持全文索引)
        2、使用Zlib算法压缩数据存储,压缩比1:10
        3、使用行锁实现高并发插入操作

    应用场景:存储归档数据,如g归档日志等其他日志信息
    设计目标:提供高速插入以及压缩的功能

Federated 存储引擎

--简概
    特点:
        1、不存放数据,单纯指向远程MYSQL服务器中数据库上的表
        2、类似于SQL SERVER链接服务器功能以及ORACLE的透明网关
    缺点:
        只支持MYSQL数据库,不支持异构数据库

Maria 存储引擎http://www.cndba.cn/Marvinn/article/2694

--简概
    特点:
        1、可看作MyIASM存储引擎后续版本
        2、支持缓存数据文件以及索引文件
        3、支持行锁设定,提供MVCC功能
        4、支持事务和非事务的安全选项
        5、拥有更好处理BLOB字段类型数据的性能改善
## 各个存储引擎比较各个存储引擎比较


版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Marvinn

Marvinn

关注

路漫漫其修远兮、吾将上下而求索

  • 99
    原创
  • 0
    翻译
  • 2
    转载
  • 36
    评论
  • 访问:458441次
  • 积分:449
  • 等级:中级会员
  • 排名:第12名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ