文章目录
MySQL
MySQL是最流行的数据库之一,是一个免费开源的关系型数据库管理系统,但是并不意味着该数据库是完全免费的,MySQL由瑞典的MySQL AB公司开发,目前属于Oracle公司,适合中小型数据库,被个人用户和中小企业青睐
MySQL属于开源数据库,开源数据库具有免费使用、配置简单、稳定性好、性能优良等特点
MySQL版本
MySQL针对不同的用户可以分为两个版本:社区版和企业版
- MySQL Community Server(社区版):该版本是自由下载并且完全免费的,但是官方不提供技术支持
- MySQL Enterprise Server(企业版):该版本是收费,而且不能下载,但是该版本有完善的技术支持
MySQL的命名机制由数字跟后缀组成(图中为Mysql-8.0.26)
- 第一个数字"8"表示的是主版本号,用于描述文件的格式,版本号一样都具有相同的文件格式
- 第二个数字"0"是发行级别,主版本号和发行级别组合在一起便构成了发行序列号
- 第三个数字"20"是在此发行系列的版本号,随着每次新发行的版本递增,通常选择已发行的最新版本
MySQL优点
MySQL数据库管理系统对于相对于其他数据库具有很有优势,分别为开源数据库、跨平台性、价格、功能强大并且使用方便
开源数据库
MySQL是开放源代码的数据库,任何人都可以获取到该数据库的源代码,是可自由使用的维护性更强的数据库
跨平台性
MySQL不仅可以在Windows上运行,可以在Unix、Linux和Mac os上运行,很多网站都选择 UNIX、Linux 作为网站的服务器,所以 MySQL 的跨平台性保证了其在 Web 应用方面的优势。虽然微软公司的 SQL Server 数据库是一款很优秀的商业数据库,但是其只能在 Windows 系列的操作系统上运行。因此,MySQL 数据库的跨平台性是一个很大的优势
价格优势
MySQL 数据库是一个自由软件,任何人都可以从 MySQL 的官方网站上下载该软件,这些社区版本的 MySQL 都是免费试用的,即使是需要付费的附加功能,其价格也是很便宜的。相对于 Oracle、DB2 和 SQL Server 这些价格昂贵的商业软件,MySQL 具有绝对的价格优势
功能强大并且使用方便
MySQL 是一个真正的多用户、 多线程 SQL 数据库服务器。它能够快速、有效和安全的处理大量的数据。相对于 Oracle 等数据库来说,MySQL 的使用是非常简单的。MySQL 主要目标是快速、健壮和易用
MySQL适用场景
MySQL是目前世界上最流行的开源关系数据库,主要应用在Web网站系统、日志记录系统、数据仓库系统、嵌入式系统
Web网站系统
MySQL之所以在Web网站系统广泛使用,是因为MySQL数据库的安装配置都非常简单,使用过程中的维护也不像很多大型商业数据库管理系统那么复杂,而且性能出色,并且可以完全免费使用
日志记录系统
MySQL数据库的插入和查询性能非常高效,需要大量的插入和查询日志记录的系统来说,MySQL 是非常不错的选择。比如处理用户的登录日志,操作日志等,都是非常适合的应用场景
数据仓库系统
MySQL 的简单复制功能,可以很好的将数据从一台主机复制到另外一台 ,不仅仅在局域网内可以复制,在广域网同样可以;虽然这个功能很多数据库都具备,但是MySQL 是免费的,其他数据库大多都是按照主机数量或者 cpu 数量来收费,当我们使用大量的 PC Server 的时候,License 费用相当惊人,其高昂的成本不是每一个公司都能够承担的
嵌入式系统
嵌入式环境对软件系统最大的限制是硬件资源非常有限,在该环境下运行的软件系统,必须是轻量级低消耗的软件
MySQL 在资源的使用方面的伸缩性非常大,可以在资源非常充裕的环境下运行,也可以在资源非常少的环境下正常运行,它对于嵌入式环境来说,是一种非常合适的数据库系统,而且 MySQL 有专门针对于嵌入式环境的版本;并且,MySQL 的定位是通用数据库,各种类型的应用一般都能利用到 MySQL 存取数据的优势。业内生产实践证明,MySQL 更适合中小型企业。以目前的软硬件产品水平来看,如果数据超过几个 TB 将难以高效利用 MySQL
MySQL的C/S架构
客户端-服务器(Client/Server)结构简称 C/S 结构,是一种网络架构,通常在该网络架构下的软件分为客户端和服务器
客户端
用户在使用MySQL时,启动的是客户端,然后通过相关命令告知服务器进行连接以完成各种操作,而服务器则按照此请示提供相应的服务。每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求
服务器
服务器是整个应用系统资源的存储和管理中心,多个客户端分别各自处理相应的功能,共同实现完整的应用。在客户/服务器结构中,客户端用户的请求被传送到数据库服务器,数据库服务器进行处理后,将结果返回给用户,从而减少网络数据的传输量
客户端和服务器程序通常不在同一台计算机上运行,客户端和服务端可以安装在两台计算机或者一台计算机上,但是不管在不在相同的计算机上,客户端都要与服务端进行同行
关于数据的添加、删除和更新等所有的请求都来自于客户端,这些请求的处理由服务器进行处理。客户端用来和用户打交道。例如,如果你请求一个按字母顺序列出的产品表,则客户端会通过网络提交该请求给服务器,服务器处理这个请求,然后根据需要对数据进行过滤、丢弃和排序,最后把结果返回到客户端
MySQL基础架构
MySQL 由连接池、SQL 接口、解析器、优化器、缓存、存储引擎等组成,可以分为三层,即 MySQL Server 层、存储引擎层和文件系统层。MySQL Server 层又包括连接层和 SQL 层
上图中,Connection pool 为连接层,Management Services & Utilities …Caches & Buffers 为 SQL 层,Pluggable Storage Engines 为存储引擎层,File system、Files & Logs 为文件系统层
Connectors 不属于以上任何一层,可以将 Connectors 理解为各种客户端、应用服务,主要指的是不同语言与 SQL 的交互
连接层
应用程序通过接口(如 ODBC、JDBC)来连接 MySQL,最先连接处理的是连接层,连接层包括通信协议、线程处理、用户名密码认证 3 部分
- 通信协议负责检测客户端版本是否兼容 MySQL 服务端
- 线程处理是指每一个连接请求都会分配一个对应的线程,相当于一条 SQL 对应一个线程,一个线程对应一个逻辑 CPU,在多个逻辑 CPU 之间进行切换
- 密码认证用来验证用户创建的账号、密码,以及 host 主机授权是否可以连接到 MySQL 服务器
Connection Pool(连接池)属于连接层。由于每次建立连接都需要消耗很多时间,连接池的作用就是将用户连接、用户名、密码、权限校验、线程处理等需要缓存的需求缓存下来,下次可以直接用已经建立好的连接,提升服务器性能
SQL层
SQL 层是 MySQL 的核心,MySQL 的核心服务都是在这层实现的。主要包含权限判断、查询缓存、解析器、预处理、查询优化器、缓存和执行计划
- 权限判断可以审核用户有没有访问某个库、某个表,或者表里某行数据的权限
- 查询缓存通过 Query Cache 进行操作,如果数据在 Query Cache 中,则直接返回结果给客户端,不必再进行查询解析、优化和执行等过程
- 查询解析器针对 SQL 语句进行解析,判断语法是否正确
- 预处理器对解析器无法解析的语义进行处理
- 查询优化器对 SQL 进行改写和相应的优化,并生成最优的执行计划,就可以调用程序的 API 接口,通过存储引擎层访问数据
SQL层说明表
名称 | 说明 |
---|---|
Management Services & Utilities | MySQL 的系统管理和控制工具,包括备份恢复、MySQL 复制、集群等。 |
SQL Interface(SQL 接口) | 用来接收用户的 SQL 命令,返回用户需要查询的结果。例如 SELECT FROM 就是调用 SQL Interface。 |
Parser(查询解析器) | 在 SQL 命令传递到解析器的时候会被解析器验证和解析,以便 MySQL 优化器可以识别的数据结构或返回 SQL 语句的错误。 |
Optimizer(查询优化器) | SQL 语句在查询之前会使用查询优化器对查询进行优化,同时验证用户是否有权限进行查询,缓存中是否有可用的最新数据。它使用“选取-投影-连接”策略进行查询。 例如 SELECT id, name FROM student WHERE gender = "女"; 语句中,SELECT 查询先根据 WHERE 语句进行选取,而不是将表全部查询出来以后再进行 gender 过滤。SELECT 查询先根据 id 和 name 进行属性投影,而不是将属性全部取出以后再进行过滤,将这两个查询条件连接起来生成最终查询结果。 |
Caches & Buffers(查询缓存) | 如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的,比如表缓存、记录缓存、key 缓存、权限缓存等。 |
存储引擎层
Pluggable Storage Engines 属于存储引擎层。存储引擎层是 MySQL 数据库区别于其他数据库最核心的一点,也是 MySQL 最具特色的一个地方,主要负责 MySQL 中数据的存储和提取;在关系数据库中,数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)
主要的存储引擎有:InnoDB、MyISAM、Memory、FEDERATED、CSV、ARCHIVE、BLACKHOLE
文件系统层
文件系统层主要是将数据库的数据存储在操作系统的文件系统之上,并完成与存储引擎的交互
总结
MySQL是最流行的数据库之一,是一个免费开源的关系型数据库管理系统
MySQL数据库管理系统对于相对于其他数据库具有很有优势,分别为开源数据库、跨平台性、价格、功能强大并且使用方便
赶紧学习起来吧!我是一个正在努力找回自我的人,希望能和一起学习的人成长,有错误的地方请各位大佬帮忙指正,如果觉得有帮助就点个赞当作对我的一个小肯定❤,peace&love