小林coding网站---mysql基础-server层-mysql连接器

整理小林coding网站关于mysql的信息笔记

基础篇

以mysql执行一条select语句,


select * from product_tb where id ='1'

mysql在中间发生了什么,这就需要了解mysql的内部的结构,其各个的主要组成部分有两层,Server层和存储引擎层
server层包括了
解析器,查询缓存,预处理器,优化器,执行计划,执行器

存储引擎包括了以不同形式存储的数据,对应的不同的存储引擎
innodb(从5.5之后成为默认的存储引擎)
myisam
memory
csv
...

image
图片来源为小林网站(https://xiaolincoding.com/mysql)

连接器

  1. 连接都是TCP三次握手,mysql基于TCP协议传输

  2. 查看mysql服务被多少客户端连接了
    image

  3. 默认的最长的空闲时长,由wait_timeout参数控制,默认是8个小时,也就是28880秒,如果超过这个时间,空闲的连接会总动断开
    image

  4. 可以使用kill connection 加上对应的id,就可以关闭对应的连接
    image

  5. mysql连接数的最大限制是多少
    image
    MySQL 服务支持的最大连接数由 max_connections 参数控制,超过200个连接,系统就会拒绝接下来的连接请求,并报错提示“Too many connections”。

  6. msyql的连接跟HTTP一样,也有短连接与长连接的分别

        连接 mysql 服务(TCP 三次握手)
        执行sql,执行少量的占时间短的sql
        断开 mysql 服务(TCP 四次挥手)
    
        // 长连接
        连接 mysql 服务(TCP 三次握手)
        执行sql  多个sql,时间长
        执行sql
        执行sql
        ....
        断开 mysql 服务(TCP 四次挥手)
    

    长连接的好处就是可以减少建立连接和断开连接的过程时间,但是长连接可能会占用内存增多,有可能被系杀掉进程,会发生mysql服务异常重启的现象。

  7. 如何解决长连接占用内存的问题

    • 第一种,定期断开长连接,然后会释放占用的内存资源
    • 第二种,客户端主动重置连接,mysql5.7版本之后实现了mysql_reset_connection()函数的接口,当客户端执行了一个很大的操作之后,代码里调用mysql_reset_connection 函数来完成重置连接,打到释放内存的效果,而且这个过程不需要重新连接和重新权限校验,恢复到刚刚创建连接的状态。

原文链接 (小林的网站)

posted on 2022-08-08 19:15  多一点  阅读(277)  评论(0编辑  收藏  举报

导航