Mysql的体系结构和存储引擎
- 1. mysql是什么?
- 2.数据库和数据库实例的区别
- 3.Mysql数据库的体系结构
- 3.1 应用层
- 3.2 服务层
- 3.3 存储引擎层
- 3.4 数据文件层
1. mysql是什么?
Mysql是一个关系型的数据库,在我们项目中的应用就是来做数据管理。
2.数据库和数据库实例的区别
从概念上来说,数据库是文件的集合;数据库实例是程序,是位于用户与操作系统之间的一层数据管理软件;数据库是由一个个文件组成,要对这些文件执行诸如select、insert、update之类的数据库操作是不能通过简单地操作文件来更改数据库的内容,需要通过数据库的实例来完成对数据库的操作。
3.Mysql数据库的体系结构
Mysql体系结构
从上图可以看出Mysql由以下几个部分组成:
3.1 应用层
- Connection Pool(连接池组件)->权限校验,线程重用,分配管理和释放数据库连接,查询缓存。
- Management Services &Utillties(管理服务和实用工具)-> Backup&Recovery(备份和恢复) Security(安全) Replication(复制) Cluster(集群)
Administration(管理) Instance Manager(数据库实例管理) Partitioning(分区) Query
Browser(可视化) Migration Toolkit(数据库迁移) INFORMATION_SCHEMA(信息数据库)
3.2 服务层
- SQL Interface(sql接口组件,接收sql命令,如DML,DDL和存储过程,并将最后结果返回给用户) DDL(数据定义语言)create/drop/alter TABLE/VIEW/INDEX/SYN/CLUSTER等(数据定义语言DDL用来创建数据库中的各种对象—表,视图,索引,同义词,聚簇) DML(数据操纵语言) insert into/update/delete等 DQL(数据查询语言) select DCL(数据控制语言) 用来授予或者回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等 grant(授权)/rollback/commit Stored Procedures 存储过程 Trigger触发器 view视图
- Parser(解析器)-> 分析sql语法的合法性,尝试将sql命令分解成数据结构,分解失败,则提示SQL语句不合理
- Optimizer(优化器)-> 生成执行计划、分析并选取最优查询路径
- Caches & Buffers(缓存和缓冲)
3.3 存储引擎层
mysql中的数据基于各种各样的存储引擎存储于文件(或者内存)中,每种存储引擎使用不同的存储规则,索引结构和锁来提供不同的功能和能力。存储引擎是基于表,而不是数据库的。
- innoDB
- MyISAM
- NDB
- Memory
- Archive
- Federated
- Maria
- 其他存储引擎
3.4 数据文件层
- 文件系统
- 文件和日志
参考文献
[1]mysql技术内幕 Innodb存储引擎 姜承尧
[2]博文:浅谈Mysql架构体系