zoukankan      html  css  js  c++  java
  • MySQL 存储引擎

    简介

    • MySQL中的数据用各种不同的技术存储在文件(或者内存)中;

    • 每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的功能和能力;

    • 这些不同的实现数据存储的技术在MySQL的整体架构中逻辑化为“存储引擎层”;

    • 存储引擎,通常又被称作“表类型”(即可以在创建表时指定存储引擎,但无法对某一数据库指定存储引擎)

     

    查看

    show engines; # 显示可支持的存储引擎
    show table status [{from|in} Db_Name] [like ‘pattern’|where expr]; # 可显示指定数据库中指定表的状态信息
    # 法一:
    show table status like ‘classes’;
    # 法二:
    show table status where Name=’classes’G

    可通过查看表的状态信息获得表所使用的存储引擎类别

    wKioL1NT0iqirX_gAAiPQBmwf9E054.jpg

    修改默认存储引擎

    # 在配置文件/etc/my.cnf中设置如下:
    default_storage_engine = InnoDB

    各存储引擎及其特性

    InnoDB

    支持事务:事务日志;日志文件大小一致:如ib_logfile0和ib_logfile1
    支持外键
    支持MVCC
    支持聚簇索引
    支持行级锁:即间隙锁
    支持辅助索引
    支持自适应hash索引
    支持热备份
    不支持全文索引

    MyISAM

    支持全文索引
    支持压缩:用于实现数据仓库,能节约存储空间并提升性能
    支持空间索引
    支持表级锁:若读写操作比例为9:1或8:2,则使用MyISAM可以提高性能
    延迟更新索引:减少IO压力
    不支持事务,外键,MVCC,行级锁等
    崩溃后无法安全恢复数据
    适用场景:多读少写的数据,较小的表,能够容忍崩溃后的修改操作和数据丢失;
    如自带的mysql数据库中的表都是使用MyISAM存储引擎的
    # 建议:使用InnoDB存储引擎,并使用read commited的隔离级别,性能并不比MyISAM性能差,故推荐使用InnoDB存储引擎
     

    ARCHIVE

    仅支持insert和select
    支持很好的压缩功能
    不支持事务,不能很好的支持索引
    适用于:存储日志信息,或其它按时间序列实现的数据采集类的应用,如监控日志
     

    CSV

    1
    2
    将数据存储为csv格式,不支持索引
    仅适用于数据交换场景

    BLACKHOLE

    1
    2
    没有存储机制,任何发往此引擎的数据都会丢弃
    由于其会记录二进制日志,故常用于多级复制架构中作中转服务器

    MEMORY

    1
    2
    3
    4
    数据保存在内存中,即是一个内存表
    仅支持hash索引,使用表级锁
    不支持blob和text数据类型
    常用于保存中间数据,如周期性的聚合数据等;也用于实现临时表

    MRG_MYISAM

    1
    2
    是MyISAM的一个变种,能够将多个MyISAM表合并为一个虚表
    属于传统的存储引擎,一般不常用

    NDB

    1
    是MySQL Cluster中专用的存储引擎,不常用

     

    第三方的存储引擎

    XtraDB

    增强的InnoDB,由Percona提供;
    用法:编译安装MySQL时,下载XtraDB的源码替换MySQL存储引擎中的InnoDB源码,并重新编译安装MySQL

    PBXT

    MariaDB自带此存储引擎
    支持引擎级别的复制,外键约束
    支持事务,MVCC
    对SSD磁盘提供适当支持

    TokuDB

    使用Fractal Trees索引,性能很强
    适用于存储大数据,拥有很好的压缩比
    已被引入新版本的MariaDB

     

    列式存储引擎

    Infobright

    前身为Maria,是增强版的MyISAM
    支持崩溃后安全恢复
    支持数据缓存

    其它列式存储引擎

    如 InfiniDB,MonetDB,LucidDB等

    开源社区存储引擎:

    Aria

    前身为Maria,是增强版的MyISAM
    支持崩溃后安全恢复
    支持数据缓存

    Groona

    全文索引引擎;
    Mroonga是基于Groona的二次开发版

    OQGraph

    由Open Query研发,支持图结构的存储引擎

    SphinxSE

    为Sphinx全文搜索服务器提供了SQL接口

    Spider

    能将数据切分成不同的分片,比较高效透明的实现了分片(shard);
    支持在分片上支持并行查询

     

    选择存储引擎可参考要素

    是否需要事务

    备份的类型的支持(热备或冷备)

    崩溃后的恢复

    特有的特性(如对SSD的支持等)

  • 相关阅读:
    MVC框架及应用
    《架构之美》三
    《架构之美》二
    深度学习之多层感知器
    架构之美
    质量属性之淘宝案例分析
    配置cocos相关问题
    3-5
    web文本框之内容提示
    【LeetCode】024. Swap Nodes in Pairs
  • 原文地址:https://www.cnblogs.com/xiaocen/p/3720346.html
Copyright © 2011-2022 走看看