前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL学习笔记(一)MySQL体系结构

MySQL学习笔记(一)MySQL体系结构

原创
作者头像
scarlett学习手册
修改2020-01-17 10:41:29
1.2K0
修改2020-01-17 10:41:29
举报
文章被收录于专栏:云学习笔记云学习笔记

前言

MySQL是当今最通用的数据库软件之一,也是大部分人接触最多,时间最长的数据库软件之一。深入了解MySQL的架构和设计对于DBA,研发和运维都非常重要,能够帮助我们在日常工作中更好地理解和运用MySQL。

本系列主要介绍MySQL的架构设计,而不会过多涉及具体的SQL语句介绍和使用。需要读者具备初级的MySQL和SQL基础。

MySQL介绍

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品,世界上最流行的关系型数据库管理系统之一,在 网络应用方面,MySQL是最好的关系数据库管理系统 (Relational Database Management System,RDBMS) 应用软件之一。

MySQL被设计为一个可移植的数据库,几乎能在当前所有的操作系统上运行,比如Linux,Solaris,Mac和Windows。尽管各种系统在底层(如线程)实现方面各有不同,但MySQL几乎总能保证在各平台上的物理体系结构的一致性。

MySQL是一个单进程多进程架构的数据库,但与Oracle多进程的架构有所不同(Oracle的Windows版本也是单进程多进程的架构)。这也就是说,MySQL数据库实例在系统上的表现就是一个进程。

区分数据库、数据库实例、数据库服务器

初入门时很多人可能会分不清这几个概念,在这里给出定义。

数据库(Database)

操作系统或存储上的数据文件的集合。MySQL数据库中,数据库文件可以是* .frm、*.MYD、*.MYI、*.ibd等结尾的文件,不同存储引擎文件类型不同。

数据库实例(Instance)

数据库实例是一个应用程序,是位于用户和操作系统之间的一层数据管理软件,由后台进程或者线程以及一个共享内存区组成。用户对数据库数据的任何操作,都是在数据库实例下进行的。应用程序只有通过数据库实例才能和数据库打交道。

数据库服务器(Database Server)

部署安装数据库实例的服务器。

数据库和数据库实例的关系

通常情况下,数据库实例和数据库是一一对应的关系,也就是一个数据库实例对应一个数据库;但在集群环境中存在多个数据库实例共同使用一个数据库。

MySQL体系结构

用一张图来总览MySQL的架构组成。自上而下可以分为网络连接层,服务层(核心层),存储引擎层,物理文件层。下面分别进行介绍。

MySQL体系架构图
MySQL体系架构图

网络连接层

负责MySQL和其他应用程序的连接交互,包括连接管理、授权认证、安全等。由客户端程序连接和MySQL服务器上的连接池组成。

每个客户端连接都对应着服务器上的一个线程,MySQL服务器上维护了一个线程池,避免为每个连接都创建销毁一个线程。当客户端连接到MySQL服务器时,服务器对其进行认证。登录认证后,还要验证客户端是否有执行某个查询的操作权限。这一层并不是MySQL所特有的技术。

使用连接池的必要性:

每个连接对应一个线程,实际业务中通常有许多个连接访问数据库服务器,如果每次连接都要创建一个新的线程,连接释放则销毁线程,对于系统损耗是非常大的。通过连接池维护和缓存一定的连接,由应用程序动态地对池中的连接进行申请、使用和释放,减少了内存损耗,提升了资源利用率。

服务层(核心层)

该层是MySQL的核心,包括很多重要的服务。分别有:

管理服务和工具组件,系统管理和控制工具,例如备份恢复、MySQL复制、集群等 ;

SQL接口组件,接受用户的SQL命令,并且返回用户需要查询的结果;

查询分析器组件,SQL命令传递到解析器的时候会被解析器验证和解析(权限、语法结构)

优化器组件,SQL语句在查询之前会使用查询优化器对查询进行优化,选取最优的路径进行条件联接并生成最终查询结果;

缓冲(Cache)组件,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据;

存储引擎层

存储引擎负责MySQL中数据的存储与提取。 服务器中的查询执行引擎通过API与存储引擎进行通信,通过接口屏蔽了不同存储引擎之间的差异。由于关系数据库中数据是以表的形式存储的,存储引擎又被称为表类型。

MySQL采用插件式的表存储引擎,是其区别于其他数据库最重要的特点。在Oracle 和SQL Server等数据库中,所有的数据存储管理机制都是一样的。而MySQL提供了多种存储引擎,用户可以根据需求为每张表选择特定的存储引擎(存储引擎是针对于表的而不是针对库)。

关于存储引擎的更多特性和功能,之后的文章会详细介绍。

物理文件层

该层主要将数据库的数据(表,索引等)存储在文件系统上,并完成与存储引擎的交互。存储数据包括日志文件,数据文件,配置文件等。

下一章将会讲解底层物理文件层的相关内容。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • MySQL介绍
  • 区分数据库、数据库实例、数据库服务器
    • 数据库(Database)
      • 数据库实例(Instance)
        • 数据库服务器(Database Server)
          • 数据库和数据库实例的关系
          • MySQL体系结构
            • 网络连接层
              • 服务层(核心层)
                • 存储引擎层
                  • 物理文件层
                  相关产品与服务
                  云数据库 SQL Server
                  腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档