• 小林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 函数来完成重置连接,打到释放内存的效果,而且这个过程不需要重新连接和重新权限校验,恢复到刚刚创建连接的状态。

    原文链接 (小林的网站)

  • 相关阅读:
    洛谷
    洛谷
    洛谷
    51nod
    洛谷
    洛谷
    51nod
    洛谷
    2019五一训练记录
    2019.5.4备战省赛组队训练赛第十九场
  • 原文地址:https://www.cnblogs.com/onemorepoint/p/16563138.html
Copyright © 2020-2023  润新知