美文网首页DevOps
MySQL存储引擎详解

MySQL存储引擎详解

作者: Amliya | 来源:发表于2018-04-27 10:38 被阅读4次

    一,基础

    1,插件式存储引擎,允许第三方组织,根据其api来设计,很多功能需要依赖引擎支持,比如事务
    2, 5.5以后默认为innodb,之前为myISAM,innodb支持事务,myISAM不支持
    3,存储引擎是表级别的概念,同一个库不建议多个引擎

    二,InnoDB

    1,处理大量的短期事务
    2,数据存储于"表空间(table space)"中
    3,所有InnoDB表的数据放置于同一个表空间中 datadir 下 ibddata(多个)
    4,每个表单独使用一个表空间存储表的数据和索引 innodb_file_per_table = ON(3,4建议选择4,建议开启此项)
    5,每个表使用单独表空间时,数据文件(数据和索引):tb1_name.ibd

    #例如
    [root@node1 mysql]# ls mydb/
    db.opt  t1.frm  t1.ibd  t2.frm  t2.ibd
    #frm 表格式定义文件
    #ibd 数据文件
    
    

    6,基于mvcc机制,并发控制,支持较高并发,支持所有的四个事务隔离级别,默认级别为REPEATABLE READ,通过间隙锁仿制幻读的出现
    7,使用聚集索引,支持自适应hash索引
    8,在MariaDB(XtraDB) 是对于Innodb大量改进后,整合社区的力量,有percona提供,虽然显示为innodb 其实为XtraDB,开源
    9,性能:预计操作,自适应hash,插入缓存区
    10,备份:支持热备,(xtrabacup)
    11,锁粒度:行级别锁
    12,崩溃后安全恢复

    三,MyISAM

    1,支持全文索引(FULLTEXT index),压缩,空间函数,不支持事务
    2,锁粒度:表级别锁
    3,崩溃后无法安全恢复
    4,在mariadb中对其进行改进为Aria,支持崩溃后恢复
    5,使用场景:只读(写较少),表较少,可以接受长时候恢复操作
    6,文件:.frm 表格式定义,MYD:数据文件,MYI:索引文件
    7,支持压缩表
    ps:查看表使用的引擎,show status table;
    ps:行格式:dynamic,fixed,compressed,compact,redundent

    四,其他存储引擎

    1,CSV:将普通的CSV(字段通过逗号分隔)作为mysql表使用,方便不同数据库软件中导入导出
    2,MRG_MYISAM:将多个MyISAM表合并成一个虚表
    3,BLACKHOLE:类似于/dev/null 多级级联复制时有用
    4,MEMORY:存内存,适用临时表,中间数据,数据不关键的,支持哈希索引,表级锁,mysql临时表默认为memory,如果临时表空间不够,则会存储在磁盘上,导致性能下降,可以调整临时表空间大小。
    5,PERFORMANCE_SCHENA:伪存储引擎,数据为mysql运行产生的数据,如果mysql没开启,此表为空
    6,ARCHIVE:只支持select和insert,支持行级锁和专用缓存区,归档可以使用
    7,FEDERATED:用于访问其他远程mysql服务器一个代理,他通过创建一个到远程MYSQL服务器的客户端连接,并将查询传输到远程服务器执行,而后完成数据存取,在MariaDB中实现的为FederatedX

    五,MariaDB支持的其他存储引擎

    1,OQGraph
    2,SphinxSE
    3,TokuDB
    4,Cassandra
    5,CONNECT
    6,SQUENCE

    相关文章

      网友评论

        本文标题:MySQL存储引擎详解

        本文链接:https://www.haomeiwen.com/subject/njoplftx.html