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 实例 数据库_数据库

Mysql体系结构

从上图可以看出Mysql由以下几个部分组成:

3.1 应用层

  1. Connection Pool(连接池组件)->权限校验,线程重用,分配管理和释放数据库连接,查询缓存。
  2. Management Services &Utillties(管理服务和实用工具)-> Backup&Recovery(备份和恢复) Security(安全) Replication(复制) Cluster(集群)
    Administration(管理) Instance Manager(数据库实例管理) Partitioning(分区) Query
    Browser(可视化) Migration Toolkit(数据库迁移) INFORMATION_SCHEMA(信息数据库)

3.2 服务层

  1. 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视图
  2. Parser(解析器)-> 分析sql语法的合法性,尝试将sql命令分解成数据结构,分解失败,则提示SQL语句不合理
  3. Optimizer(优化器)-> 生成执行计划、分析并选取最优查询路径
  4. Caches & Buffers(缓存和缓冲)

3.3 存储引擎层

mysql中的数据基于各种各样的存储引擎存储于文件(或者内存)中,每种存储引擎使用不同的存储规则,索引结构和锁来提供不同的功能和能力。存储引擎是基于表,而不是数据库的。

  • innoDB
  • MyISAM
  • NDB
  • Memory
  • Archive
  • Federated
  • Maria
  • 其他存储引擎

3.4 数据文件层

  • 文件系统
  • 文件和日志

参考文献
[1]mysql技术内幕 Innodb存储引擎 姜承尧
[2]博文:浅谈Mysql架构体系