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,事务型存储引擎。

437

被折叠的 条评论
为什么被折叠?



