一、数据库的存储引擎

在数据库命令行页面输入: show engines;




如何启动db2数据库 db2数据库引擎_db2 删除schema中所有表


上面的出现结果表示,数据库支持的9种引擎。


MyISAM

1、简介

MyISAM是MySQL中常见的存储引擎,曾经是MySQL的默认存储引擎。MyISAM是基于ISAM引擎发展起来的,增加了许多有用的扩展。

2、存储

MyISAM采用的是索引与数据分离的形式,将数据保存在三个文件中.frm.MYD,.MYIs。

  • frm文件存储表的结构;
  • MYD文件存储数据,是MYData的缩写;
  • MYI文件存储索引,是MYIndex的缩写。

基于MyISAM存储引擎的表支持3种不同的存储格式。包括静态型、动态型和压缩型。

  • 静态型是MyISAM的默认存储格式,它的字段是固定长度的;
  • 动态型包含变长字段,记录的长度不是固定的;
  • 压缩型需要用到myisampack工具,占用的磁盘空间较小。

3、优缺点

优点:在于占用空间小,处理速度快。

缺点:不支持事务的完整性和并发性。

4、事物

不支持事物


CSV

1、简介

数据库的引擎之一,逻辑上由逗号分割数据的存储引擎,他是相对比较简单的数据库引擎。

2、存储

它会在数据库子目录里为每个数据表创建一个.CSV文件。这是一种普通文本文件,每个数据行占用一个文本行。

实际上操作维护的是一个标准的CSV文件。

3、事物

CSV存储引擎不支持索引,不支持事物。

4、优缺点

优点:简单,修改数据可以 直接修改 .CSV 文件(使用excel打开)

缺点:因为操作简单,不安全。

5、使用场景

因为不安全,所以一般来说CSV很少用来使用的。但是因为很简单,这个CSV引擎用来专门导入数据。

大型数据库移动数据的时候,生成的文件都是10G以上的,甚至只能上T,这种数据文件根本无法打开,因为你打开或者是复制之后,数据就已经填满内存,然后接着就内存溢出了。

这个时候咱们这就需要进行使用CVS引擎了,使用工具或者是脚本,将数据一行一行读入CVS文件中,通过数据库的导入功能直接导入CVS文件中,数据库就生成了表、数据以及当前使用引擎的数据文件。

注意:不是所有的MySQL版本都支持CSV存储引擎,只有在MYSQL 5.0及以上版本才支持。


MRG_MYISAM

1、简介

Mrg_Myisam引擎我个人称为分表引擎,他是多个MyISAM引擎表的集合。它与MyISAM引擎表有“所有表同样的列和索引信息”

官方描述::MERGE存储引擎,也被认识为MRG_MyISAM引擎,是一个相同的可以被当作一个来用的MyISAM表的集合。"相同"意味着所有表同样的列和索引信息。

2、存储

MyISAM引擎表不存储数据,真正的数据依然是MyIsam引擎的表中,但是可以直接进行查询、删除更新等操作。

3、事务

不支持事务

4、使用场景

大型网络网站的数据是十分多的,有的时候一张表的而数据可以达到亿条数据,这个时候,为了提高查询数据,就需要进行分表,使用的就是MRG_MYISAM引擎


BLACKHOLE

1、简介

MySQL在5.x系列开始提供了Blackhole引擎–“黑洞”,任何写入到此引擎的数据均会被丢弃掉, 不做实际存储;Select语句的内容永远是空。

2、存储

  • 创建一个blackhole的表时,服务器server在数据库目录创建一个表定义文件。文件用表的名字开头,以.frm作为扩展名。没有其他文件关联到这个表。
  • blackhole表不存储任何数据。

3、事物及索引

BLACKHOLE支持所有类型的索引,但是没有事物。

4、优缺点

优点:分发主库上使用blackhole表,可以支持更多的备库。虽然会在分发主库执行查询,但是其代价非常小,因为blackhole表中没有任何数据。

缺点:该表存在Bug, 例如在某些情况下会忘记将自增ID写入到二进制日志里面。所以要小心使用blackhole表。

5、使用场景

  • 转储文件语法的验证。
  • 来自二进制日志记录的开销测量,通过比较允许二进制日志功能的BLACKHOLE的性能与禁止二进制日志功能的BLACKHOLE的性能。
  • 因为BLACKHOLE本质上是一个“no-op” 存储引擎,它可能被用来查找与存储引擎自身不相关的性能瓶颈。

MEMORY

1、简介

MEMORY是MySQL中一类特殊的存储引擎。它使用存储在内存中的内容来创建表,而且数据全部放在内存中

2、存储

每个基于MEMORY存储引擎的表实际对应一个磁盘文件。该文件的文件名与表名相同,类型为frm类型。该文件中只存储表的结构。而其数据文件,都是存储在内存中,这样有利于数据的快速处理,提高整个表的效率。

3、索引或事物

MEMORY默认使用哈希索引。速度比使用B型树索引快。当然如果你想用B型树索引,可以在创建索引时指定。

注意:

1、使用此引擎,服务器需要有足够的内存来维持MEMORY存储引擎的表的使用。如果不需要了,需要释放内存,甚至删除不需要的表。

2、数据文件放入内存中,意味着当服务器关机、重启、宕机之后,所有的数据就会丢失,生命周期很短。一般来说都是一次性的。


PERFORMANCE_SCHEMA

1、简介

从MySql5.5开始新增加了一个数据库:performance_schema,其引擎为:PERFORMANCE_SCHEMA,主要用于收集数据库服务器性能参数。用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。

Performance Schema 提供了一种在服务器运行时检查服务器的内部执行的方法。数据收集是通过修改服务器源代码来实现的。 不同于其他功能(如复制或Event Scheduler),不存在与Performance Schema相关联的单独线程。

服务器监控持续不中断地进行,花费很少。 开启Performance Schema不会使服务器不可用。

2、存储

Performance Schema 中的表是内存表,不使用磁盘存储,在 datadir 的 performance_schema 目录下,只有.frm表结构文件,没有数据文件。表内容在服务器启动时重新填充,并在服务器关闭时丢弃。

注意:MySQL5.5默认是关闭的,需要手动开启。MySQL5.6开始,Performance Schema 默认打开


ARCHIVE

1、简介

ARCHIVE引擎顾名思义:数据归档引擎。他专门用来用来存储历史数据,因为他的压缩比非常高,同样的数据,比MyISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%。其设计目标只是提供高速的插入压缩功能

2、存储

每个archive表在磁盘上存在两个文件

  • .frm(存储表定义)
  • .arz(存储数据)

往archive表插入的数据会经过压缩,archive使用zlib进行数据压缩,archive支持optimize table、 check table操作,支持插入跟查询,不支持更新跟删除操作。

3、事物及索引

它不支持索引同时也不能缓存索引和数据,所以它不适合作为并发访问表的存储引擎。Archivec存储引擎使用行锁来实现高并发插入操作,但是它不支持事务。


InnoDB

1、简介

InnoDB是默认的事务型存储引擎,也是最重要,使用最广泛的存储引擎。在没有特殊情况下,一般优先使用InnoDB存储引擎。

2、存储

文件存储形式:使用InnoDB时,会将数据表分为.frm 和 idb两个文件进行存储。

数据存储形式:InnoDB表是基于聚簇索引(另一篇博客有介绍)建立的,聚簇索引对主键的查询有很高的性能,不过他的二级索引(非主键索引)必须包含主键列,否则索引会很大。

3、颗粒度

InnoDB采用MVCC(多版本并发控制)来支持高并发,InnoDB实现了四个隔离级别,默认级别是REPETABLE READ,并通过间隙锁策略防止幻读的出现。它的锁粒度是行锁。

4、事物

InnoDB是典型的事务型存储引擎,并且通过一些机制和工具,支持真正的热备份。


FEDERATED

1、简介

Federated引擎个人称为远程连接与共享引擎。

FEDERATED引擎能够将多个分离(不在同一台服务器上的机器)的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。

注意:

  1. 本地数据库服务必须支持“FEDERATED”存储引擎,远程服务器可以不支持
  2. 本地服务器最好不是集成环境,例如 apmxe ,wamp 等,集成环境,启动“FEDERATED”存储引擎会出现其他问题,不能正常启动
  3. “FEDERATED”存储引擎是从MySQL5.0开始支持的 。
  4. 因为操作本地库中的远程表,就是操作远程库中对应的数据库表,所以在本地库中对应远程表的操作(新增,修改,删除),均为反应都对应的远程表中。


如何启动db2数据库 db2数据库引擎_如何启动db2数据库_02


参考网站:

Mysql存储引擎之MyISAM:https://baijiahao.baidu.com/s?id=1572086262419176&wfr=spider&for=pc

Mysql存储引擎介绍、查看及常用存储引擎讲解:https://www.2cto.com/database/201801/715203.html