Mysql核心:存储引擎
需知:
存储引擎其实就是数据库底层软件组织中的一部分,增删改查等都需要借助于存储引擎。
mysql存储引擎是插件式存储引擎,可插拔。默认的存储引擎是InnoDB,可以自己切换或者自定义新的存储引擎。
所以mysql存储引擎有一个极大的优点: 可以根据存储机制,索引技巧以及锁定粒度等功能,选择不同的存储引擎。
1.查询mysql可支持使用的存储引擎:
show engines;
效果如下:
可以发现,InnoDB是Mysql数据库默认支持的存储引擎。
2.存储引擎之间的差异(来自视频):
- InnoDB
- 数据库底层储存格式为文件式:.frm结尾文件是放表结构的文件,.ibd结尾文件是放数据和索引的文件。
- 进入文件查看
show VARIABLES like '%data%'
效果如下:
cmd 进入datadir; 效果如下:
javaweb 是我创建的一个数据库,cd javaweb +dir 进去, 效果如下:
可以发现,.ibd结尾的文件都是我创建的表数据。如果有.opt结尾的文件,就是用来存储编码格式之类的。
- Innodb支持事物:支持热备,如果是对数据完整性要求高,那么就选择支持事物的存储引擎;
- 锁的粒度:采用MVVC(多版本并发),支持高并发操作,支持四种事物隔离级别。锁粒度属于行锁,相对于表锁并发性高。
- 存储特点:采用聚簇索引,所以主键查询效率极高。
- 运用场景: 更新查询频繁,高并发,要求事物,需要外键约束
-
Myisam
- 存储形式:数据表文件;.frm结尾文件(数据表文件),.MYD结尾文件(数据文件),.MYI结尾文件(索引文件);与InnoDB不同在于,它将数据与索引分离了。
- 事物:不支持
- 存储特点:非聚簇
- 运用场景:计算,全文检索
-
Memory
- 存储形式:数据存储在内存中,增删改查 效率高,不能持久化,会丢失
- 事物:不支持
- 表级锁
3.Windows下如何自由切换存储引擎:
1.修改默认存储引擎:
记事本打开my,效果如下:
这里便可以修改了!
- 创建表时,给这张表加上想给它的存储引擎。
create table emp(....) engine=Innodb;
- 查询表的基本信息(包括存储引擎):
show table status from learningdata where name = 'emp'
效果如下: