【mysql是怎样运行的】-客户端与服务器连接

news2024/11/29 2:54:50

文章目录

  • 1. 几种连接方式
    • 1.1 TCP/IP
    • 1.2 命名管道和共享内存
    • 1.3 UNIX 域套接字
  • 2. 服务器处理客户端请求
    • 2.1 连接管理
    • 2.2 解析与优化
    • 2.3 存储引擎

1. 几种连接方式

1.1 TCP/IP

  • 数据库服务器进程和客户端进程可能运行在不同的主机中,它们之间必须通过网络进行通信。MySQL采用TCP作为服务器和客户端之间的网络通信协议。在网络环境下,每台计算机都有一个唯一的IP地址,如果某个进程需要采用TCP协议进行网络通信,就可以向操作系统申请一个端口号。端口号是一个整数值, 它的取值范围是 0 ~ 65535.。这样,网络中的其他进程就可以通过 IP地址+端口号的方式与这个进程建立连接,这样进程之间就可以通过网络进行通信。
  • 服务器默认端口号3306,可以通过 -P 参数来指定其他端口号:
#启动服务器程序的命令行中增加指定端口
#这样 MySQL 服务器在启动时就会去监听指定的端口号 3307
mysqld -P3307
  • 果客户端进程想要使用 TCP/IP 网络与服务器进程进行通信,那么在使用 mysql 命令启动客户端程序时,如下命令:
#IP地址就是-h后面,它是服务器进程所在主机的主机名IP
mysql -h127.0.0.1 -uroot -P3307 -p密码

1.2 命名管道和共享内存

  • Windows 用户,可以考虑在客户端进程和服务器进程之间使用命名管道或共享内存进行通信
  • 使用命名管道进行进程间通信:需要在启动服务器程序的命令中加上 --enable-named-pipe 参数,然后在启动客户端程序的命令中加上 --pipe 或者--protocol=pipe 参数.
  • 使用共享内存进行进程间通信:需要在启动服务器程序的命令中加上 --shared-memory参数。在成功启动服务器后,共享内存便成为本地客户端程序的默认连接方式。我们也可以在启动客户端程序的命令中加上 --protocol=memory 参数来显式指定使用共享内存进行通信
    需要注意的是,使用共享内存进行通信的服务器进程和客户端进程必须位于同一台 Windows主机中

1.3 UNIX 域套接字

  • 如果服务器进程和客户端进程都运行在操作系统为类 UNIX 的同一台机器上,则可以使用UNIX域套接字进行进程间通信.
  • 如果在启动客户端程序没有指定主机名
  • 或者指定的主机名为 localhost,
  • 又或者指定了- -protocol=socket 的启动参数,那么服务器程序和客户端程序之间就可以通过 UNIX域套接字进行通信了

2. 服务器处理客户端请求

  • 无论客户端进程和服务器进程采用哪种方式进行通信,最后实现的效果都是客户端进程向服务器进程发送一段文本 ( MySQL 语句) 。服务器进程处理后再向客户端进程返回一段文本(处理结果)。
  • 客户端可以向服务器发送增删改查等各类请求。
  • 以select查询为例子,如图:服务器程序在处理来自客户端的查询请求时 , 大致需要分为 3 部分 :
    连接管理、解析与优化、存储引擎.
    在这里插入图片描述

2.1 连接管理

  • 客户端进程可以采用前面介绍的TCP/IP、命名管道或共享内存、 UNIX域套接字等几种方式与服务器进程建立连接.
  • 每当有一个客户端进程连接到服务器进程时,服务器进程都会创建一个线程专门处理与这个客户端的交互; 当该客户端退出时会与服务器断开连接, 服务器并不会立即把与该客户端交互的线程销毁, 而是把它缓存起来 , 在另一个新的客户端再进行连接时,把这个缓存的线程分配给该新客户端,这样就不用频繁地创建和销毁线程。
  • 客户端程序发起连接时,需要携带主机信息、用户名、密码等信息,服务器程序会对客户端程序提供的这些信息进行认证,如果认证失败 , 服务器程序会拒绝连接。

2.2 解析与优化

  • 查询缓存MySQL服务器程序处理查询请求的过程会把刚刚处理过的查询请求和结果缓存起来 . 如果下一次有同样的请求过来,直接从缓存中查找结果就好了,就不用再去底层的表中查找了。这个查询缓存可以在不同的客户端之间共享,也就是说,如果客户端 A 刚刚发送了 一个查询请求,而客户端 B 之后发送了同样的查询请求,那么客户端 B 的这次查询就可以直接使用查询缓存中的数据了。 (如果两个查询请求有任何字符上的不同(例如,空格、注释、大小写等,如NOW()函数)都会导致缓存不会命中,在mysql8.0已经直接删除缓存)。
  • MySQL 的缓存系统会监测涉及的每张表,只要该表的结构或者数据被修改,比如对该表使用了的INSERT、 UPDATE、 DELETE、TRUNCATE TABLE 、 ALTER TABLE 、 DROP TABLE 或 DROP DATABASE 语句 , 则与该表有关的所有查询缓存都将变为无效并从查询缓存中删除
  • 语法解析:客户端发送的是一段文本, MySQL 服务器程序首先对这段文本进行分析 , 判断请求的语法是否正确,然后从文本中将要查询的表、各种查询条件都提取出来放到 MySQL 服务器内部使
    用的一些数据结构上
  • 查询优化:MySQL 的优化程序会对我们的语句做一些优化,如外连接转换为内连接、表达式简化 、子查询转为连接等一堆东西

2.3 存储引擎

  • MySQL 服务器处理请求的过程简单地划分为 server 层和存储引擎层。连接管理、查询缓存、语法解析、查询优化这些并不涉及真实数据存取的功能划分为 server 层的功能,存取真实数据的功能划分为存储引擎层的功能。各种不同的存储引擎为server层提供统一的调用接口。
  • server层在判断某条记录符合要求之后,其实是先将其发送到一个缓冲区,待到该缓冲区满了,才会向客户端发送真正的记录。
  • 创建引擎语句:
CREATE TABLE 表名(
语句,
) ENGINE 存储引擎名称;

#如果表已经建好了,可以继续修改
ALTER TABLE 表名 ENGINE = 存储引擎名称;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/41629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

韩国研究人员开发交通信号控制新算法

由Keemin Sohn教授领导的韩国中央大学的研究小组提出了一种用于交通信号控制的元RL模型。具体来说,该团队开发了一个扩展的深度Q网络(EDQN)结合的基于上下文的元RL模型,用于交通信号控制。传统的交通信号控制器通常无法处理交通拥…

Echarts画散点图

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Echarts画散点图前言一、散点图悬浮框鼠标移入可滚动操作二、散点图偏下方的点悬浮数据显示不全三、数据量大、数据类别多、数据重复点多造成散点图散点展示不全或展示散点出…

操作系统基础教程——第六章课后答案

1.思考题 (6)什么是临界区?什么是临界资源?什么是竞争条件? 临界区:访问临界资源的程序段(代码)。 临界资源:并发进程中共享变量所代表的资源;一次只能供一个进程使用的资源。 …

【机器学习知识点】【1】二维与三维空间梯度下降微分求解及可视化展示

【机器学习知识点】系列文章主要介绍机器学习的相关技巧及知识点,欢迎点赞,关注共同学习交流。 本文主要介绍了机器学习中梯度下降的数学微分求解方法及其可视化。 目录1. 二维空间的梯度下降求解及可视化1.1 二维空间梯度求解1.2二维空间梯度可视化2. 三…

灰色关联度分析-详细代码和说明

1、数据来源:自主计算 2、时间跨度:无 3、区域范围:无 4、指标说明: 因素分析的基本方法过去采用的主要是统计的方法,如回归分析,回归分析虽然是一种较通用的方法,但大都只用于少因素的、线…

SpringBoot SpringBoot 原理篇 3 核心原理 3.2 启动流程【1】

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇3 核心原理3.2 启动流程【1】3.2.1 环境准备3.2.2 启动流程3 核心原理 3.2 启…

基本的图像处理操作

Python中的图像处理基础图像处理是一种对图像执行操作以从中提取信息或增强图像的方法。图像处理是当今计算机视觉中最热门的话题之一,因为它被认为是计算机视觉、OCR 和其他相机相关领域的基础。让我们开始实际处理图像。提示:只是在这里向你展示一个代…

MySQL数据库的事务

文章目录一、事务是什么?二、事务的四大特征原子性一致性持久性隔离性MySQL的四个隔离级别一、事务是什么? 数据库的事务是一种机制,一个操作序列,里面包含了一组数组库操作命令 事务把所有的命令作为一个整体一起向系统提交或撤…

世界杯直播背后的服务器(云计算体系)

世界杯直播背后的服务器 世界杯直播过程中,各大网络平台流媒体app上最大的变化毫无疑问就是零延迟。以前球迷看球是都会发现,网络直播的球赛会比电视播出的球赛延迟40s左右。如果群里有个看电视的兄弟兄弟每个进球他都能提前40秒预告给你,那么…

MySQL 索引

目录 一、索引的概念 二、索引的作用 三、索引的缺点 四、创建索引的原则依据 五、索引的分类和创建 1、普通索引 2、唯一索引 3、主键索引 4、组合索引(单列索引与多列索引) 5、全文索引(FULLTEXT) 六、查看索引 七、…

SpringBoot SpringBoot 原理篇 1 自动配置 1.18 自动配置原理

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇1 自动配置1.18 自动配置原理1.18.1 变更自动配置1.18.2 小结1.18.3 总结1 自…

校园网站毕业设计,校园网站设计与实现,校园网站论文作品参考

功能清单 【后台管理员功能】 关于我们设置:设置学校简介、联系我们、加入我们、法律声明、学校详情 广告管理:设置小程序首页轮播图广告和链接 留言列表:所有用户留言信息列表,支持删除 会员列表:查看所有注册会员信…

飞桨模型部署至docker并使用FastAPI调用(五)-WordPress展示页面

文章首发及后续更新:https://mwhls.top/4092.html,无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评,非常感谢! 飞桨模型部署至docker并使用FastAPI调用目录框架搭建 测试…

关于图的学习

一、图的定义 图G由顶点集V和边集E组成,记为G (V, E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)集合。若V { v1,v2,...,vn },则用 | V | 表示图G中顶点…

PyQt5可视化编程-布局管理

在一个GUI程序里,布局是一个很重要的方面。布局就是如何管理应用中的元素和窗口。有两种方式可以搞定:绝对定位和PyQt5的layout类 1.绝对定位: 每个程序都是以像素为单位区分元素的位置,衡量元素的大小。所以我们完全可以使用绝对定位搞定每个…

【Linux】网络编程基础

文章目录网络基础1.网络与操作系统的关系2.计算机网络发展3.协议3.1协议分层3.2OS七层模型3.3TCP/IP五层模型4.网络传输基本流程4.1数据包的封装和分用4.1.1报头和有效载荷4.2局域网的两台主机通信4.3跨网络的两台主机通信5.IP地址和MAC地址5.1IP地址5.2MAC地址5.3IP地址和MAC地…

XSCTF联合招新【真是阳间题】(MSIC+Crypto)

文章目录XSCTF联合招新【真是阳间题】(MSICCrypto)Step1:查看文件step2:操作流程关于Base64,Base32,Base16进制的区别方法:Base64:Base32:Base16:XSCTF联合招新【真是阳间题】(MSICC…

控制瑞芯微平台GPIO(输入、输出、电平读取)

控制瑞芯微平台GPIO(输入、输出)GPIO编号计算控制步骤输出高电平读取电平GPIO编号计算 GPIO编号 BANK * 32 GPIO_PIN GPION_MP N * 32 8 * (M -1) P 示例:GPIO7_C2 7 X 32 8 X (3-1) 2 242 GPIO2_A1 2 X 32 8 X (1-1) 1 73 A对…

IO流~File

File File类概述和构造方法 File:它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来是要通…

【PyTorch深度强化学习】DDPG算法的讲解及实战(超详细 附源码)

需要源码请点赞关注收藏后评论区留言留下QQ~~~ 一、DDPG背景及简介 在动作离散的强化学习任务中,通常可以遍历所有的动作来计算动作值函数q(s,a)q(s,a),从而得到最优动作值函数q∗(s,a)q∗(s,a) 。但在大规模连续动作空间中,遍历所有动作是不…