MySQL内部原理深度解析(MySQL高性能第三版)

mysql连接的两种方式

mysql客户端可以通过两种方式链接mysql,一种为unix socket,另外一种为基于tcp/ip协议。
Unix socket方式是通过使用一个Unix socket文件来实现连接的,默认位于 /tmp/mysql.sock。Unix socket方式比tcp/ip方式要快,但是不能连接远程的mysql。

tcp/ip的方式可以支持远程访问数据库
socket 方式:mysql -h localhost -uroot -p 或者 mysql -uroot -p
tcp/ip 方式:mysql -h 127.0.0.1 -uroot -p

TCP/IP连接全过程解析

登录服务器,通过tcpdump抓包。

tcpdump -S -nn -tttt -i lo host 127.0.0.1 and port 3306 and tcp -c 100 -w /tmp/tcpdump.cap
在这里插入图片描述
停止抓包,此时会生成一个/tmp/tcpdump.cap 文件。为了便于查看,我们需要一个工具 ——Wireshark。
Wireshark是一个网络协议检测工具,可以用来分析tcpdump抓到的cap文件。

下载地址
在这里插入图片描述
**第一步:tcp三次握手**
在这里插入图片描述
tcp包由tcp header以及tcp data两部分组成。Seq表示tcp data中第一个数据字节的序号。
首次建立连接时,序列号并非从0开始,两端会使用 ISN 产生器,生成各自的初始Seq序列号(通常两者并不相等)。数值范围是 [0, 2^32)
seq、ack的作用:
第二步:继续寒暄+mysql用户身份验证
在这里插入图片描述在这里插入图片描述
tcp data数据Len为99 byte,Mysql Packet Len只有95 byte,这剩余的4个byte是mysql协议的头部。其实就是传输层的协议(Tcp)包裹着应用层的协议(Mysql)。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述第三步:客户端请求执行query在这里插入图片描述在这里插入图片描述

这个version_comment是什么呢:
CMake 命令有一个COMPILATION_COMMENT Option,允许在构建MySQL时指定注释。version_comment就是该注释的值。

在这里插入图片描述在这里插入图片描述在这里插入图片描述这里的结果tcp data居然长达 3113 byte,而且拆分成了很多mysql Protocol块。
在这里插入图片描述
第四步:断开连接
在这里插入图片描述在这里插入图片描述
查看mysql连接数(线程数)

show status like "Threads%"; 

在这里插入图片描述

首先每个线程会分配栈空间。
其次mysql数据库会为每个连接分配连接缓冲区和结果缓冲区,也是要消耗时间的。
接着每次每个连接都会进行tcp3次握手和断开时的4次挥手,分配一些缓存之类的空间,

每个连接到MySQL服务器的线程都需要有自己的缓冲。甚至在线程空闲时,也大约需要立刻分配256K。
– 它们使用默认的线程堆栈,网络缓存等。事务开始之后,则需要增加更多的空间。运行较小的查询可能仅给指定的线程增加少量的内存消耗,然而如果对数据表做复杂的操作例如扫描、排序或者需要临时表,则需分配大约 read_buffer_size, sort_buffer_size, read_rnd_buffer_size, tmp_table_size 大小的内存空间。不过它们只是在需要的时候才分配,并且在那些操作做完之后就释放了。有的是立刻分配成单独的组块,例如 tmp_table_size 可能高达MySQL所能分配给这个操作的最大内存空间了。注意,这里需要考虑的不只有一点 – 可能会分配多个同一种类型的缓存,例如用来处理子查询。一些特殊的查询的内存使用量可能更大 – 如果在MyISAM表上做成批的插入时需要分配 bulk_insert_buffer_size 大小的内存。执行 ALTER TABLE, OPTIMIZE TABLE, REPAIR TABLE 命令时需要分配 myisam_sort_buffer_size 大小的内存。

连接池

扫描二维码关注公众号,回复: 5344818 查看本文章

数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接,这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wolf_love666/article/details/87970440