Mysql - 引擎介绍

引擎介绍

    • InnoDB 引擎:具备外键支持功能的事务存储引擎
    • MyISAM 引擎:主要的非事务处理储存引擎
    • Archive 引擎:用于数据存档
    • Blackhole 引擎:丢弃写操作,读操作会返回空内容
    • CSV引擎:储存数据的时候,逗号分隔各个数据项
    • Menory 引擎:置于内存的表
    • Federted 引擎:访问远程表
    • Merge 引擎:管理多个MyISAM表集合
    • NDB 引擎:Mysql集群专用储存引擎

InnoDB 引擎:具备外键支持功能的事务存储引擎

  • InnoDB是MySql默认的事务型引擎,他被设计用来处理大量短期的事务,可以确保事务的完整提交(Commit)和回滚(Rollback)。
  • 除了增加和查询外,还需要更新、删除操作,那么优先选择InnoDB存储引擎
  • 对比MyISAM的储存引擎,InnoDB写的效率差一些,并且会占用更多的磁盘空间以保存数据和索引。
  • MyISAM:只缓存索引,不缓存真实数据;InnoDB不仅缓存索引还要缓存真实的数据,对内存要求较高,而且内存对性能有决定性的影响

MyISAM 引擎:主要的非事务处理储存引擎

  • MyISAM 提供了大量的特性,包括全文索引、压缩、空间函数等,但是MyISAM 不支持事务,行级锁、外键 那么毫无疑问他在面临崩盘的时候他的数据是无法安全恢复的。
  • 优势是 访问时快速的,对事务的完整性没有要求
  • 针对统计数据有额外的常数储存,故而count(*)他的查询速度是很快的
  • 业务应用场景:只读应用或者以读为主的业务
对比项 MyISAM InnoDB
外键 不支持 支持
事务 不支持 支持
行表锁 表锁,即使操作一条记录也会锁住整个表,那么在这种情况下,很明显他不适合高并发的场景 行锁,操作时只锁住某一行,不对其他行有影响,适合高并发的场景
缓存 只缓存索引,并不缓存数据 不仅缓存索引还要缓存真实数据,对内存要求是比较高的,而且对性能的要求是比较高的
自带系统表使用 Y N
关注点 性能:节约资源、简单业务 事务:并发写、事务、资源
默认安装 Y Y
默认使用 N Y

Archive 引擎:用于数据存档

  • archive 是归档的意思,仅仅支持插入和查询的俩种功能(行插入之后那么久不能修改了)
  • 拥有很好的压缩机制,使用zlib压缩库,在记录请求的时候进行压缩,经常被用作仓库使用
  • 拥有很高的插入速度,但是查询较差

Blackhole 引擎:丢弃写操作,读操作会返回空内容

  • Balckhole引擎没有实现任何储存机制,他会丢弃所有插入的数据,补做任何的保存

CSV引擎:储存数据的时候,逗号分隔各个数据项

  • CSV 引擎可以将普通的CSV文件作为MySql 表来处理 但是不支持索引
  • CSV 引擎可以作为一种数据交换的机制 非常有用
  • 对于数据的快速导入,导出是有明显的优势的
# demo

create table csv_domain (id int not null, name varchar(50) not null ) engine = csv;

# 查看建表信息
show create table csv_domain;

# 插入数据库

insert into csv_domain(id, name) values (1, 'domain');
insert into csv_domain(id, name) values (2, 'mysql');

-- 可以查找到对应的 csv 文件 那么我们就可以打开对应 csv 文件 查看数据

Menory 引擎:置于内存的表

Memory 采用的逻辑介质是内存,响应速度很快,但是当mysql守护进程奔溃的时候对于数据来说 我的数据那么就会丢失,另外我需要要求储存的数据结构是不变的格式。

主要特征:

  • Memory同时支持 哈希索引 和 B+ 树索引
  • Menpry表至少比MyISAM表要快一个数量级
  • 数据文件和索引文件分开存储
  • 生命周期短,基于这个缺陷选择Memory存储引擎的时候需要特别的小心

Federted 引擎:访问远程表

  • 服务器代理

Merge 引擎:管理多个MyISAM表集合

NDB 引擎:Mysql集群专用储存引擎

你可能感兴趣的:(MySQL,mysql,数据库)