mysql存储引擎

mysql的存储引擎主要有MyISAM,InnoDB,MEMORY, MERGE,NDB,最常用的是InnoDB和MyISAM.

MyISAM

MyISAM在磁盘存储成3个文件

  • .frm(存储表定义)
  • .MYD(MYData,存储数据)
  • .MYI(MYIndex,存储索引)

MyISAM表支持3种不同的存储格式

  • 静态(固定长度)表
  • 动态表
  • 压缩表

InnoDB
InnoDB存储表和索引

  • 使用共享表空间储存:创建表的表结构保存在.frm文件中,数据和索引保存在innodb_data_home_dir和innodb_data_file_path定义的表空间中,可以是多个文件。
  • 使用多表空间存储:创建表的表结构保存在.frm文件中,但是每个表的数据和索引单独保存在.ibd中。如果是个分区表,则每个分区对应单独的.ibd文件,文件名是”表名+分区名”

Memory

内存存储

  • 优点:是将表内容直接存储在内存中,访问速度快
  • 缺点:受max_heap_table_size系统变量的约束,初始值是16MB,可以根据需要加大。服务重启后,数据丢失。
  • 适合存那些内容变化不频繁的代码表,或者作为统计操作的中间结果表

TokuDB

  • 使用Fractal树索引保证高效的插入性能
  • 优秀的压缩特性,比InnoDB高近10倍
  • Hot Schema Changes特性支持在线创建索引和添加、删除属性列等DDL操作
  • 使用Bulk Loader达到快速加载大量数据
  • 提供了主从延迟消除技术
  • 支持ACID和MVCC

使用场景

  • 日志数据,频繁插入
  • 历史数据,高压缩特性
  • 在线DDL较频繁的场景

你可能感兴趣的:(mysql)