1、存储引擎mysql
1.Mariadb存储引擎sql
存储引擎就是指表的类型,决定了表在计算机中的存储方式,在MySQl中是一个插入式的存储引擎概念。决定了MySQl数据库中的表可使用不一样的存储方式存储。数据库
2.mysql支持的存储引擎(Mariadb-servver5.5.44)缓存
MariaDB[(none)]> SHOW ENGINES;安全
说明:服务器
MariaDB 中相似Innodb的存储引擎实际上为XtraDB (percona社区提供) InnoDB的加强改进,但仍然叫作InnoDB并发
2、Innodb存储引擎ide
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
注意:
此方式存储数据当清空表数据,而不会清空表格式;由于数据和文件使用不一样的文件分开存储
3、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冗余方式
4、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