35、mysql存储引擎

mysql 存储引擎:存储引擎也通常被称作“表类型”


查看所有支持的存储引擎

SHOW ENGINES;


查看指定表的存储引擎

SHOW TABLE STATUS [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]

SHOW TABLE STATUS IN mydb\G;

SHOW TABLE STATUS IN mydb LIKE 't1'\G;


SHOW TABLE STATUS IN mydb WHERE Name='t1'\G;    

Name 表名

Engine 存储引擎

Version 版本

Row_format 行格式

Rows 表中的行数

Avg_row_length 平均每行包含的字节数

Data_length 表中数据总体大小,单位为字节

Max_data_length 表能够占用的最大空间,单位为字节,0表示没有上限

Index_length 索引的大小,单位为字节

Data_free 对于MyISAM表,表示已经分配但尚未使用的空间,其中包含此前删除行之后腾出来的空间

Auto_increment 下一个AUTO_INCREMENT的值

Create_time 表的创建时间

Update_time 表数据的最后一次修改时间

Check_time 使用CHECK TABLE或myisamchk最近一次检查表的时间

Collation 排序规则

Checksum 如果启动,则为表的checksum

Create_options 创建表时指定使用的其他选项

Comment 表的注释信息


InnoDB

    两种格式:

      1.innodb_file_per_table=OFF,即是用共享表空间

         每个表一个独有的格式定义文件:tb_name.frm

         还有一个默认位于数据目录下的共享的表空间文件:ibdata#

      2.innodb_file_per_table=ON,即是用独立表空间

        每个表在数据库目录下存储两个文件

          tb_name.frm

          tb_name.ibd

MyISAM:

   每个表都在数据库目录下存储三个文件

   tb_name.frm

   tb_name.MYD

   tb_name.MYI


表空间: table space ,由InnoDB管理的特有格式数据文件,内部可同时存储数据和索引

SHOW VARIABLES LIKE '%engine%';

如何修改默认存储引擎:通过default_storage_engine服务变量实现


各存储引擎的特性:

   InnoDB:

      支持事务,有事务日志

      ib_logfile0

      ib_logfile1

      支持外键约束(MyISAM不支持外键)

      支持MVCC(多版本并发控制)

      支持聚簇索引(数据和索引存放在一起)

           聚簇索引之外的其他索引,通常称之为辅助索引

       行级锁:间隙锁

       支持使用辅助索引

       支持自使用hash索引

       支持热备份(依赖此特性innodb_file_per_table=ON)


    MyISAM:

      全文索引

      支持表压缩存放:做数据仓库,能节约存储空间并提升性能

      支持空间索引

      表级锁

      延迟更新索引


      不支持事务、外键和行级锁

      崩溃后无法安全恢复数据


      使用场景:只读数据,表较小,能够忍受崩溃后的修复操作和数据丢失


    ARCHIVE

        仅支持INSERT和SELECT,支持很好压缩功能

        应用于存储日志信息,或其他按照时间序列实现的数据采集类的应用

    CSV:

        将数据存储为CSV格式,不支持索引,仅使用与数据交换场景

    BLACKHOLE:

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

    MEMORY:

        保存数据在内存中,内存表;常用于保存中间数据,如周期性的聚合数据等,也用于实现临时表

        支持hash索引,使用表级锁,不支持BLOB和TEXT数据类型

    MRG_MYISAM:

       是MYISAM的一个变种,能够将多个MyISAM表合并成一个虚表

    NDB: 

       是MySQL CLUSTER中专用的存储引擎、


第三方的存储引擎

  OLPT

    XtraDB:增强的InnoDB,有Percona提供

       编译安装时,下载XtraDB的源码替代MySQL存储引擎中的InnoDB的源码

    PBXT:MariaDB自带此存储引擎

       支持引擎级别的复制、外键约束,对SSD磁盘提供适当支持

       支持事务、MVCC

    TokuDB:使用 Fractal Trees索引,适用存储大数据,拥有很好的压缩比,已经被引入MariaDB


  列式数据存储引擎:

     Infobright:目前较有名的列式引擎,适用于海量数据存储场景,如PB级别,专为数据分析和数据仓库设计

     InfiniDB

     MonetDB

     LucidDB


  开源社区存储引擎:

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

     Groona:全文索引引擎

     Mroonga:是基于Groona的二次开发版

     OQGraph:由open query研发,支持图(网状 )结构的存储引擎

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

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


   如何选择??

      是否需要事务

      备份的类型的支持

      崩溃后的恢复

      特有的特性


猜你喜欢

转载自blog.51cto.com/kaiyuandiantang/2315172