存储引擎
什么是存储引擎,有什么用?
- 存储引擎是MySQL中特有的一个术语,其他数据库中没有(Oracle中有,但不叫这个名字)
- 存储引擎实际上是一个表存储/组织数据的方式
- 不同的存储引擎,表存储数据的方式不同
怎么给表添加/指定"存储引擎"呢?
show create table t_student;
可以在建表的时候给表指定存储引擎
CREATE TABLE `t_student` (
`no` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`cno` int DEFAULT NULL,
PRIMARY KEY (`no`),
KEY `cno` (`cno`),
CONSTRAINT `t_student_ibfk_1` FOREIGN KEY (`cno`) REFERENCES `t_class` (`classno`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
在建表的时候可以在最后小括号")"的右边使用:
- ENGINE来指定存储引擎
- CHARSET来指定这张表的字符编码方式
结论:
mysql默认的存储引擎是:InnoDB
mysql默认的字符编码方式是:utf8
#建表时指定存储引擎,以及字符编码方式
create table t_product(
id int,
name varchar(255)
)engine = InnoDB default charset = utf8;
drop table t_product;
show tables;
show create table t_product;
查看MySQL支持哪些搜索引擎
命令:show engines \G
关于MySQL常用的存储引擎
MyISAM存储引擎
- 他管理的表具有以下特征:
- 使用三个文件表示每个表
- 格式文件 - 存储表结构的定义(mytable.frm)
- 数据文件 - 存储表行上的内容(mytable.MYD)
- 索引文件 - 存储表上索引(mytable.MYI):索引是一本书的目录,缩小扫描范围,提高查询效率,可被转换为压缩、只读表来节省空间
对于一张表来说,只要是主键,或者加有unique约束的字段会自动创建索引
InnoDB存储引擎
优点:安全,支持事务
缺点:效率低,不能压缩,不能转换为只读,不能很好的节省存储空间
MEMORY存储引擎
优点:查询效率是最高的
缺点:不安全,关机之后数据消失,因为数据和索引都是在内存当中