关于MySQL的体系结构及存储引擎图解
作者:自xing且乐观~
这篇文章主要介绍了关于MySQL的体系结构及存储引擎图解,MySQL整体的逻辑结构可以分为4层,客户层、服务层、存储引擎层、数据层,需要的朋友可以参考下
一、MySQL的体系结构
① 结构图
② 各结构的功能
连接层:最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方 案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。
服务层:第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析 和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。
引擎层:存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。 不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。
存储层:主要是将数据存储在文件系统之上,并完成与存储引擎的交互。
二、存储引擎
① 简介及支持
② 建表时,指定引擎
CREATE TABLE表名( 字段1字段1类型[COMMENT字段1注释], ... 字段n字段n类型[COMMENT字段n注释] )ENGINE = INNODB [COMMENT表注释];
查看当前数据库支持的引擎
SHOW ENGINES;
三、各存储引擎的特点
InnoDB
介绍:
InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL 5.5之后,InnoDB是默认的MySQL存储引擎。
特点:
DML操作遵循ACID模型,支持事务﹔
行级锁,提高并发访问性能;
支持外键FOREIGN KEY约束,保证数据的完整性和正确性;
文件:
xxx.ibd: xxx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。
参数: innodb_file_per_table
MyISAM
介绍:
MylSAM是MySQL早期的默认存储引擎。
特点:
不支持事务,不支持外键;
支持表锁,不支持行锁访问速度快
文件:
xxx.sdi:存储表结构信息
xxx.MYD:存储数据
xxx.MYI:存储索引
Memory
介绍:
Memory引擎的表数据时存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。
特点:
内存存放
hash索引(默认)
文件:
Xxx.sdi:存储表结构信息
对以上三种总结:
四、存储引擎的选择
在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。
- InnoDB:是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。
- MyISAM:如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。
- MEMORY:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。MEMORY的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。
注意:
- DDL:数据定义语言:这些语句定义不同的数据段、数据库、表、列、索引等数据库对象。常用语句关键字主要包括create,drop,alter,truncate等
- DML:数据操作语句:用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用语句关键字主要包括 insert,delete,update。
- DCL数据控制语句(Data Control Language):用来授权或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,能够对数据库进行监视。比如常见的授权、取消授权、回滚、提交等等操作。
- DQL:数据查询语言全称是Data Query Language,是用来进行数据库中数据的查询的,即最常用的select语句
ACID
原子性:是指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性:是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
隔离性:多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
持久性:意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
到此这篇关于关于MySQL的体系结构及存储引擎图解的文章就介绍到这了,更多相关MySQL体系结构及存储引擎内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!