一、存储引擎

1.Mariadb存储引擎

存储引擎就是指表的类型,决定了表在计算机中的存储方式,在MySQl中是一个插入式的存储引擎概念。决定了MySQl数据库中的表可以使用不同的存储方式存储。

2.mysql支持的存储引擎(Mariadb-servver5.5.44)

MariaDB[(none)]> SHOW ENGINES;

MYsql存储引擎是什么 mysql的储存引擎_mysql存储引擎简介

说明:

MariaDB中类似Innodb的存储引擎实际上为XtraDB (percona社区提供)InnoDB的增强改进,但仍然叫做InnoDB

二、Innodb存储引擎

1.Innodb特性概述

(1)处理大量的短期(小)事务;具有自动崩溃恢复特性

(2)数据存储于"表空间(tablespace)"中;自行管理的黑盒;其内部组织为多个文件,表现为一个文件

(3)可直接存储于裸设备中,而无需文件系统支持

(4)基于MVCC来支持高并发,支持所有的四个隔离级别,默认级别为REPEATABLEREAD(可重读功能); 间隙锁防止幻读;

(5)Innodb表使用聚集索引;也支持"自适应hash索引"(无法显示创建,InnoDB内部自行维护)

(6)锁粒度:行级锁(一部分内容)

2.innodb表空间存储方式

(1) 所有InnoDB表的数据和索引放置于同一个表空间中;表空间文件存储于datadir定义的目录下

数据文件(存储数据和索引):ibddata1, ibddata2, ...存满了自动扩张,可限制单个表的物理空间大小

(2) 每个表单独使用一个表空间存储表的数据和索引;才能实现各种高级功能

参数:innodb_file_per_table=ON

数据文件(存储数据和索引):tbl_name.ibd,

表格式定义(每个表多少字段,每个字段的名称等信息):tbl_name.frm

注意:

此方式存储数据当清空表数据,而不会清空表格式;因为数据和文件使用不同的文件分开存储

三、MyISAM存储引擎

1.MyISAM概述

(1)特性

最早的存储引擎,也最成熟。早些服务于数据仓库(较少的插入操作但是较多的读操作的场景),不适用于在线事务处理的应用场景。

支持全文索引(FULLTEXTindex)

支持直接对表数据压缩

支持空间函数(GIS)

不支持事务,且为表级锁(锁粒度粗糙);

崩溃后无法安全恢复,可以手动check恢复,但时间长

注意:

Mariadb对MyISAM做了增强,为Aria存储引擎;其支持崩溃后安全恢复

(2)适用场景

只读(或者写较少)、表较小(可以接受长时间进行修复操作)

2.数据文件存储

每个表有三个文件进行数据的存储表格式定义文件tbl_name.frm

数据文件tbl_name.MYD

索引文件tbl_name.MYI

行格式:

dynamic变长字段动态行, fixed固定长度的行长短, compressed压缩后存放, compact紧致的, redundent冗余方式

四、MySQL支持的其它存储引擎

1.CSV:将普通的CSV(字段通过逗号分隔)作为MySQL表使用;

2.MRG_MYISAM:将多个MyISAM表合并成为一个虚拟表;

3.BLACKHOLE:类似于/dev/null,不真正存储任何数据;

4.MEMORY:所有数据都保存于内存中,内存表;支持hash索引;表级锁;一般用于对临时表采取的操作

5.PERFORMANCE_SCHEMA:伪存储引擎;mysql关闭会消失不见

6.ARCHIVE:只支持SELECT和INSERT操作;支持行级锁和专用缓存区;不支持事务;可用于数据仓库,做不可能发生改变,归档保存的不再做修改的历史数据

7.FEDERATED:用于访问其它远程MySQL服务器一个代理,它通过创建一个到远程MySQL服务器的客户端连接,并将查询传输到远程服务器执行,而后完成数据存取;在MariaDB的上实现是FederatedX

8.其他

OQGraph、SphinxSE、TokuDB、Cassandra、CONNECT、SQUENCE