【转载】MySQL客户端服务器协议

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

查询的实行路径:

      这个协议是半双工的,这意味着 MySQL 服务器在某个给定的时间,可以发送或接收数据,但是不能同时发送和接收。这也意味着没有办法截断消息。

      这种协议让 MySQL 的沟通简单而又快捷,但是它也有一些限制。其中一个就是无法进行流程控制,一旦一方发送消息,另一方在发送回复之前就必须提取完整的消息。这像来回抛球的游戏:在任意时刻,只有某一方有球,而且除非有球在手上,否则就不能把球抛回去(发送消息)。

      客户端用一个数据包将查询发送到服务器。这就是为什么 max_packet_size 这个配置参数对于大查询很重要的一个原因(如果查询过大,那么服务器会拒绝接收数据并且抛出一个错误)。一旦客户端发送了查询,那就意味着“球”已经不在自己手中,唯一能做的事情就是等待结果。

      但是,服务器发送的响应由许多数据包组成。服务器发送响应的时候,客户端必须接收完整的结果集。它不能只提取几行数据后就要求服务器停止发送剩下的数据。如果客户端只需要其中的几行数据,要么等待所有数据都传送完毕后丢掉不用的数据,要么就笨拙地断开连接。这两种办法都不好,这就是为什么 LIMIT 子句很重要的原因。

      还有另外一种理解方式,当客户端从服务器提取数据的时候,它认为所有数据都是从服务器“”过来的,但实际情况是服务器在产生这些数据的同时就把它们“”到客户端。客户端只需要接收推出来的数据,根本没办法告诉服务器停止发送数据。

      绝大多数连接 MySQL 的类库,能让你提取完整的结果,然后缓存到内存中,或者只是提取需要的数据。默认的行为通常是提取所有数据后缓存。这很重要,因为 MySQL 只有在所有数据被提取之后,才会释放点所有的锁和资源。查询的状态会是“发送数据”。如果客户端类库一次性提取了所有的数据,那么就可以减少服务器所做的工作,让服务器可以尽可能快地完成所有的清理工作。

      大部分客户端类库可以让使用者像直接从服务器上提取数据一样处理结果,但是它实际上只是在类库的内存中处理数据。这种机制在大多数时候都工作良好,但是对于很庞大的结果集也许会需要很长的时间和很多内存。如果不缓存数据,那么就可以使用较少的内存,并且尽快开始工作。这么做的缺点就是在应用程序和类库交互的时候,服务器端的锁和资源都是被锁定的。


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8天前
|
安全 关系型数据库 MySQL
CentOS7仅安装部署MySQL80客户端
通过上述步骤,你可以在CentOS 7上成功安装并配置MySQL 8.0客户端。这个过程确保你能够使用MySQL客户端工具连接和管理远程的MySQL数据库,而不需要在本地安装MySQL服务器。定期更新MySQL客户端可以确保你使用的是最新的功能和安全修复。
75 16
|
1月前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
193 15
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
23天前
|
SQL 存储 关系型数据库
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
73 12
|
25天前
|
SQL 关系型数据库 MySQL
MySQL操作利器大公开!这几款客户端让你事半功倍
本文介绍了多种MySQL数据库管理工具,包括命令行工具、图形化用户界面(GUI)工具和Web界面工具。主要工具有: 1. **Navicat for MySQL**:功能强大,支持多种数据库管理任务,但需付费。 2. **DBeaver**:开源免费,支持多种数据库,安装包较大。 3. **MySQL Workbench**:官方提供的图形化工具,适合MySQL全家桶用户。 4. **HeidiSQL**:轻量级Windows客户端,简单易用。 5. **phpMyAdmin**:基于Web的管理工具,易于部署和使用。 6. **SQLyog**:适用于Windows,功能丰富,有免费
55 3
|
2月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
54 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
3月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
192 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
3月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
217 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
3月前
|
网络协议 Unix Linux
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
114 4
|
3月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
125 3
|
3月前
|
网络协议 Java API
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
84 2