Mysql系列之--重新认识Mysql

1、Mysql是什么

Mysql是一个被广泛使用的开源的关系型数据库管理系统(RDBMS),使用结构化查询语句SQL进行管理和操作数据。Mysql有客户端和服务端,客户端通过ip地址、端口、用户名、密码连接到服务端,然后使用SQL语句进行数据的增删改查操作。

2、核心概念

2.1、数据库

数据库(DataBase)是一个有组织的数据集合,包含多个数据库表(Table)、视图(View)。

例如用户管理系统的数据库,包含用户表、角色表、部门表等。

2.2、表

表(Table)是数据库中存储数据的基本单位,一个表行(记录row)列(字段col)组成。

例如user表可能有ID、姓名、年龄、性别、邮箱、电话、密码等字段组成。

2.3、行

行(row)在数据库表中表示一条记录。

例如user表中的一行就代表了一个用户的信息。

2.4、列

列(column)在表中表示一个字段,定义数据类型和约束。

例如user表中姓名列,定义为字符串,长度可能定义32位长度。

2.5、SQL

sql(Structured Query Language)结构化查询语句,sql是用于与数据库交互的操作语句。

例如查询,select * from user 查询user表中所有用户信息。

3、日常使用

日常使用Mysql一般是以下情况

  • 启动Mysql服务端程序
  • 启动Mysql客户端程序,并连接到服务端
  • 在客户端操作窗口输入sql语句执行,客户端将执行请求发送给服务端,服务端收到请求后执行然后返回给客户端相应的结果

4、Mysql安装

Mysql的安装有多种方式,可以下载源码编译安装、官网下载安装包安装、docker容器部署安装等,Mysql可以安装到不同的操作系统,Linux和Windows操作系统。根据需要安装自己需要的版本

4.1、容器部署

在Docker中部署Mysql,首先需要创建一个Mysql容器

docker run -d --name mysql-container -e MYSQL_ROOT_PASSWORD=123456  -p 3307:3306 mysql:8.0.24

 该命令表示创建并启动一个版本为8.0.24,名称为mysql-container的容器,-d表示后台运行容器,-e表示添加容器内的环境变量,-p表示使用宿主机3307端口映射容器3306端口

进入mysql容器

docker exec -it mysql-container mysql -u root -p

5、客户端

连接Mysql的客户端比较多,已navicat客户端程序为例

新建连接,填写连接名称,主键ip地址、端口号、用户名密码,然后测试连接是否成功,成功连接后,点击确定。

6、客户端与服务端连接

客户端与服务端属于两个进程,在建立连接时是两个进程进行连接,支持多种连接方式,常用的是TCP/IP协议

Mysql服务在启动时,默认会申请监听3306端口,也可以自行修改监听端口然后启动,客户端根据Mysql所在主机Ip和端口建立连接。

7、服务器处理客户端请求

客户端编写一点sql语句,点击执行后,客户端将请求发送到服务器,服务端收到请求后进行处理,返回处理结果到客户端

从图中可以看出服务器处理客户端请求基本分为三步:

7.1、连接管理

每次当客户端发送请求时,首先需要与服务端建立连接,通过TCP协议连接,每当客户端连接到服务器时,服务器都会创建一个线程来专门维护这个连接,线程的不断创建销毁会占用服务器资源,为了高效的管理线程,都会有线程池的概念,一个线程使用完不会立即销毁,会缓存起来,下次有新的请求到来,可以直接使用,减少了线程的创建销毁带来的资源消耗,连接管理可以设置存活的线程数,最大连接数保证服务器正常运行。

客户端发起请求时,需要携带IP、端口、用户名、密码进行认证,认证通过后连接成功。

7.2、解析与优化

7.2.1、查询缓存

当第一次进行了查询,然后第二次查询是,就不需要重新执行sql进行处理,直接冲缓存中获取结果返回给客户端,当然当查询语句不通,无论大小写,多了空格等,或者使用了某些函数都会导致缓存无法命中,需要重新处理。缓存需要设置一定的过期时间,超过时间缓存就会被清理。

7.2.2、语法解析

由于客户端发送的是一段文本,所有服务器收到请求后,首先需要验证语法是否正确,然后从文本中获取需要查询的表,字段,还有查询条件等

7.2.3、查询优化

由于客户端发送的sql语句执行效率比较低,例如我们sql里面使用表连接,子查询等,服务器将sql优化为效率最高的sql,然后生成了执行计划,确定了查询应该使用哪些索引,应该使用什么样的表连接方式(内连接,外连接等)。

7.3、存储引擎

Mysql将正在数据的存储和提取交给了存储引擎进行管理,逻辑上我们的数据存储在表中,但是物理上表中有行列,如何进行存储,是通过存储引擎管理,为了方便管理,将连接管理、查询缓存、语法解析、查询优化等划分为Sql Server的功能,将与数据存储和调取的功能划分为存储引擎的功能,各个不同的存储引擎提供接口给Sql Server统一调用(存储引擎API)。

7.3.1、常用存储引擎

Mysql支持很多种存储引擎,不同的存储引擎在某些功能上不同

常用的Mysql存储引擎有InnoDB、MyISAM,Mysql默认的存储引擎为InnoDB,事务型存储引擎。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿小木的愤怒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值