概述
首先要了解MySQL体系结构
客户端连接器 连接 MySQL Server
MySQL Server 分为 连接层,服务层,引擎层,存储层
注意:1、索引Index是在存储引擎层实现的,不同的存储引擎索引结构不同。
2、InnoDB是MySQL 5.5 版本以后默认的存储引擎。
- 连接层:最上层是一些客户端和连接服务,主要完成一些类似于连接处理,授权认证以及相关的安全方案,服务器也会为安全接入的每个客户端验证它所具有的操作权限。
- 服务层:第二层架构主要完成的大多数核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行,所有跨存储引擎的功能也在这一层实现,如过程、函数等。
- 引擎层:存储引擎真正负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信,不同的存储引擎具有不同的功能,可以根据不同的需要来选取合适的存储引擎。
- 存储层:主要是将数据存储在文件系统之上,并完成与存储引擎的交互。
什么是存储引擎?
存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的而不是基于库的,所以存储引擎也可被称为表类型。
注意:
1、查询建表语句:show create table 表名;
2、创建表时指定表存储引擎:
create table udser{
name varchar(10),
id int(5);
}engine=InnoDB;
3、查看当前数据库支持的存储引擎:
show engines;
查询结果解释:
Engine 类型 Support 是否支持 Comment 注释 Transactions 是否支持事务 XA 是否支持XA协议 Savepoints 是否支持保存点
InnoDB 是一种兼顾高可靠性和高性能的通用存储引擎。
1、特点:
- DML操作遵循ACID模型,支持事务。
- 行级锁,提高并发访问性能。
- 支持外键foreign key约束,保证数据的完整性和正确性。
2、文件:
xxx.ibd :xxx代表的是表名
InnoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm,sdi)、数据和索引。
3、参数: innodb_file_per_table
查询语句:
show variables like 'innodb_file_per_table'
注:ibd正常查看不了内容,可以在路径下进入cmd
输入:ibd2sdi 表名.ibd
存储引擎的逻辑存储结构
TableSpece | 表空间 |
Segment | 段 |
Extent | 区 |
Page | 页 |
Row | 行 |
注意:区和页的大小固定的,区的大小是1M ,页的大小是16k,所以一个区可以包含64个页。
MyISAM 是早期默认的存储引擎
1、特点:
不支持事务,不支持外键,支持表锁,不支持行锁,访问速度快
2、文件:
xxx.sdi:存储表结构信息
xxx.MYD:存储数据
xxx.MYI:存储索引
Memory 存储在内存中,由于受到硬件、断电等问题,只能将这些表作为临时表或缓存使用
1、特点:
内存存放、hash索引(默认)
2、文件:
xxx.sdi:存储表结构信息
重点总结:
1、问InnoDB和MyISAM的区别:
- InnoDB支持事务,MyISAM不支持
- InnoDB支持行锁,MyISAM 支持表锁
- InnoDB支持外键,MyISAM不支持
2、这三种引擎什么时候选择哪种:
- InnoDB:对事务完整性和并发条件下要求数据一致性,要求比较高。
- MyISAM:只是以读取和插入为主,很少更新和删除,并对事务的完整性、并发性要求不高。
- Memory:存在内存中,访问速度快,可用于临时表及缓存,缺陷就是对表的大小有限,太大的表无法在内存中返回,无法保障安全性。
最后
以上就是大力小鸭子为你收集整理的MYSQL 存储引擎篇的全部内容,希望文章能够帮你解决MYSQL 存储引擎篇所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复