目录
——什么是储存引擎?
存储数据,建立索引、更新、查询数据等技术的实现方式。存储引擎基于表,而不是基于库。索引存储引擎也可以被称为表类型。
——关于表的储存引擎查询和建表语句
---查询建表引擎语句
show create table account;
---查询当前数据库支持的储存引擎
show engines;
---指定建表的储存引擎
CREATE TABLE 表名(
字段1,字段1类型[COMMENT 注释]
......
) ENGINE = INNODB;
/*这里 INNODB 就是该表的建表语句*/
——关于特殊储存引擎的介绍
---INNODB
INNDO是一种是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5版本之后,InnoDB是默认的MySQL的存储引擎。
特点:
(1)DML操作遵循ACID模型,支持事务
(2)行级锁,提高并发访问性能
(3)支持外键 FOREIGN KEY 约束,保证数据的完整性和正确性
关于INNDB的文件:
xxx.idb:xxx表示表名,InnoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm,sdi)、数据和索引。
特殊参数:参数:innodb_file_per_table 代表每一张表都对应一个表空间
可以通过代码指令查看该参数是否被打开:
show VARIABLES like 'innodb_file_per_table';
可见,我们的相应文件路径下每个数据文件都有独立的空间。那么怎么查看文件的数据结构呢?
直接用cmd打开该文件所在的目录,输入ibd2sdi 想查询的表名.ibd即可。这里我们查询A表
C:\ProgramData\MySQL\MySQL Server 8.0\Data\test>ibd2sdi A.ibd
逻辑储存结构
-TableSpace:表空间 —> -Segment:段 —> -Extent:区(1M,可包含64个page) —> -Page:页(16K) —> -Row:行
---MyISAM
MyISAM是MySQL早期的默认存储引擎
特点:
(1)不支持事务,不支持外键
(2)支持表锁,不支持行锁
(3)访问速度快
关于MyISAM的文件:
(1)xxx.sdi 存放表结构信息
(2)xxx.MYD 存放数据
(3)xxx.MYI 存放索引
如何查看sdi表结构的数据?
我们可以直接用记事本打开xxx.sdi文件,但是没有缩进格式。我们可以通过网站:
传入文件中的代码,他就会进行自动排序,我们就可以轻松查看文件的结构信息了。
---Memory
Memory引擎的数据存放在内存中,受硬件问题,或断电问题的影响,只能将这些表作为临时或缓存表使用
特点:
(1)电脑内存存放(访问速度快)
(2)默认使用hash索引
文件:
xxx.sdi 存储表结构信息
——总结:关于特殊引擎的选择
InnoDB:对事务的完整性有较高的要求,数据查询包括其他很多的操作。(存储核心数据)
MyISAM:读写和插入操作是核心,其他操作相对较少,对事务的 完整性,并发性 要求不高。(存储非核心数据)
Memory:将所有的数据存放到内存中,访问速度快,但当面对停电或设备损坏时,常常会使数据丢失,数据安全性不高。通常用于临时表及缓存。其次,该引擎对表的大小有限制,太大的表无法缓存(数据缓存)