Mysql的四种通信方式

Mysql的四种通信方式

老方式,先练一下审美
在这里插入图片描述


前言

TCP/IP
Unix Socket
named pipe
shared memory

一、TCP/IP

TCP/IP套接字连接方式是MySQL在任何平台都提供的一种连接方式,也是网络中使用最多的一种方式。

那么他们是怎么连接上的嘞?
在这里插入图片描述
假设我有两台服务器分别部署mysql数据库客户端(192.168.0.1)和mysql数据库实例(192.168.0.2),两者需要进行通信,需要建立TCP/IP连接;

检查权限表(user表),判断客户端的ip有没有机会和我们的mysql实例建立关系

在这里插入图片描述
为啥要用这个进行通信嘞?
提到通信,我们需要解决的问题是身份识别问题。就比如两个人去相亲了,首先男方得知道女方叫小王啥的,不能看见一个女的就上去跟人家谈婚论价(没打错)吧,那你不是神经病吗?
在这里插入图片描述

对于一个机器的,我们有操作系统管理,不同的进程操作系统都会给他一个身份–进程号(PID),这个是可以作为唯一的标识的。
所以本地登录mysql还可以这么操作:
在这里插入图片描述
这里我们就不需要ip和端口号了,因为我们的圈子就这麽大,穿个马甲也认识你。
但是网络间进行通信的时候,PID就不管事了,另外操作系统支持的网络协议可能也是不一样的。
所以网络间进程通信需要解决唯一身份标识和网络协议识别问题。(明白你和你小朋友聊天多麻烦了吧)。
这个问题我们的TCP/IP协议可以解决呀,IP层的ip地址可以唯一标识网络计算机身份,好了知道你女朋友住在哪个小区了,传输层的“协议+端口”可以唯一表示进程,好了到了你女朋友的家门口了,有了这三样你就可以见到你的女朋友了。(ip地址、协议、端口号)。
在这里插入图片描述

二、Unix Socket

UNIX Socket连接方式其实不是一个网络协议,所以只能在MySQL客户端和数据库实例在同一台服务器上的情况下使用。

你品,你细品这句话,人类的进步就是从偷懒开始的。
当然这个通信是有他的价值的?
存在即合理(勿喷用法)

不需要经过网络协议栈,不需要打包拆包,计算校验和,维护序号,路由和应答等;
人家只是简简单单的将应用层数据从一个进程拷贝到另一个进程,当然这个速度也是要快的

Unix Socket的地址是一个socket类型的文件在文件系统中的路径。

三、Named Pipes(命名管道)

首先说一下,这个协议是人家windows的情侣款套餐,其他平台不可饲用(没错)。
named pips可以在一个计算机内使用或者同一个局域网下的计算机进行使用,跟网络协议没有半毛钱的关系。
使用方法:

enable-named-pipe

四、Share Memory(共享内存)

允许两个不相关的进程访问同一个逻辑内存。
这个也是只有人家windows饲用
使用这个协议需要在配置文件中在启动的时候使用 –shared-memory参数

总结

在这里插入图片描述

可以学习前两个通信方式,其他的不需要深入了解。

猜你喜欢

转载自blog.csdn.net/qq_43549291/article/details/113851221