SQL中的存储引擎
(了解内容)
概述
1、存储引擎是MySQL特有的,其它数据库没有。
2、使用:SHOW CREATE TABLE t_class(表名);
完整的建表语句:
CREATE TABLE `t_class` (
`cno` int NOT NULL,
`cname` varchar(128) NOT NULL,
PRIMARY KEY (`cno`),
UNIQUE KEY `cname` (`cname`)
) ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
3、注意:在MySQL当中,凡是标识符是可以使用反引号(`)括起来的。(只限于mysql,不通用)
4、建表的时候可以指定存储引擎,也可以指定字符集。
5、这里MySQL默认使用的存储引擎是InnoDB方式。默认采用的字符集是utf8mb4。
存储引擎的本质
1、通过采用不同的技术将数据存储在文件或内存中。
2、每一种技术都有不同的存储机制,不同的存储机制提供不同的功能和能力。
3、通过选择不同的技术,可以获得额外的速度或功能,改善我们的应用。
4、查看引擎的命令:show engines;
引擎的使用
1、在创建表时,可使用< ENGINES> 选项为CREATE TABLE语句显示指定存储引擎。
例如:
CREATE TABLE 表名(
NO INT
)ENGINE = MyISAM;
2、如果创建表时没有指定存储引擎,则使用当前默认的存储引擎。
3、默认的存储引擎可在my.ini 配置文件中使用default-storage-engin选项指定。
4、修改表的存储引擎使用:
ALTER TABLE 表名 ENGINE = 存储引擎名称;
5、查看表使用的存储引擎,命令如下:
(Navicat中不支持\G、\g,在cmd中就可以。)
a)show create table t_class\G;
b)show table status like 't_class'\G;
常见的存储引擎
MyISAM存储引擎
1、MyISAM引擎是MySQL数据库最常用的。
2、它管理的表具有以下特性:
特性一:使用三个文件表示每个表:
a)格式文件 — 存储表的结构(mytable.frm)
b)数据文件 — 存储表的数据(mytable.MYD)
c)索引文件 — 存储表的索引(mytable.MYI)
特性二:可转换为压缩、只读表来节省空间,同时提高检索效率。
(不支持事务。)
InnoDB存储引擎
1、InnoDB存储引擎是MySQL数据库的缺省引擎(默认引擎);
2、它管理的表具体有以下特征:
a)每个InnoDB表在数据库目录中以.frm格式文件表示;
b)InnoDB表空间tablespace被用于存储表的内容;
c)提供一组用来记录事务性活动的日志文件;
d)用COMMIT(提交)、SAVEPOINT及ROLLBACK(回滚)支持事务处理;
e)提供全部ACID兼容;
f)在MySQL服务器崩溃后提供自动恢复;
g)多版本(MVCC)和行级锁定;
h)支持外键及引用的完整性,包括级联更新和删除。
MEMORY存储引擎
1、使用MEMORY存储引擎的表,因为数据存储在内存中,且行的长度固定,所以使得MEMORY存储引擎非常快;
2、MEMORY存储引擎管理的表具有下列特征:
a)在数据库目录内,每个表均以.frm格式文件表示;
b)表数据及索引被存储在内存中;
c)表级锁机制;
d)字段属性不能包含TEXT或BLOB字段;
3、MEMORY存储引擎以前被称为HEAP引擎。
选择合适的存储引擎
1、MyISAM表最适合于大量的数据读而少量数据更新的混合操作。MyISAM表的另一种适用情形是使用压缩的只读表。
2、如果查询中包含较多的数据更新操作,应使用InnoDB。其行级锁机制和多版本的支持为数据读取和更新的混合提供了良好的并发机制。
3、使用MEMORY存储引擎存储非永久需要的数据,或者是能够从基于磁盘的表中重新生成的数据。