一.存储引擎:
<1>MySQL体系结构:
1.连接层:
- 主要接收客户端的连接,完成一些连接的处理、认证授权、及相关操作安全方案、检测是否超过最大连接数等等;也会为安全接入的每个客户端验证它所具有的操作权限。
- 例如:在连接MySQL服务器时,我们需要输入用户名和密码,输入后在连接层就要校验用户名和密码。这个过程就是授权认证的过程,以及认证之后还需要校验每一个客户端所具有的权限(也就是可以操作哪些数据库/表)。
2:服务层:
- 绝大部分的“核心”功能都是在服务层完成。如SQL接口、并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。所有跨存储引擎要在这一层实现,如 过程、函数等。
3:引擎层:
- 上图一个个圆筒就是存储引擎。提供了很多存储引擎供我们选择,如果这些存储引擎不能满足我们需求,我们还可以其基础上可以改变;所以叫可插拔存储引擎。
- 控制的就是MySQL数据的存储和提取,服务器通过API和存储引擎进行通信交互。索引在存储引擎层实现的,也就意味着,不同存储引擎,索引结构不一样。
【注意】控制数据库的数据如何存、取,如何来进行组织。具体数据库中数据是存在磁盘中的。
4:存储层:
- 主要将数据存储在文件系统上,并完成与存储引擎的交互。(存储数据库相关的数据,包含:一系列日志(Redo、Undo)、数据、索引、二进制志、错误日志、查询日志、慢查询日志;都会存储在磁盘当中)
<2>存储引擎简介:
1.概念:
存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎基于表的,而不是基于库的,所以存储引擎也可被称为表类型。
2.指定存储引擎语法:
CREATE TABLE 表名 (
字段1 字段1类型[comment 字段1注释],
……
字段n 字段n类型[comment 字段n注释]
) ENGINE=InnoDB [comment 表注释]
3.查看当前数据库支持的存储引擎:
show engines;
4.例:
# 创建表my_myisam,并指定MYISAM存储引擎
create table my_myisam(
id int,
name varchar(10)
)engine=myisam;
# 创建表my_memory,指定memory存储引擎
create table my_memory(
id int,
name varchar(10)
)engine=memory;
<3>特点:
1.InnoDB:
- 是一种兼备高可靠和高性能的通用存储引擎,在MySQL 5.5之后,是默认的;
- 特点:
- DML操作遵循ACID模型,支持事务;
- 行级锁,提高并发访问性能;
- 支持