MySQL 数据库连接原理和性能优化 - 学习/实践
1.应用场景
学习MySQL数据库连接原理和性能优化, 开发高性能程序. |
2.学习/操作
常见的 MySQL 客户端MySQL 服务端启动之后,就可以通过客户端建立与服务端的连接,然后发送查询/更新请求了。 我们可以通过 MySQL 安装目录 以上都是日常开发过程中经常打交道的 MySQL 客户端,这里,为了更接近底层原理,我们使用
mysql 命令解析我们可以通过如下命令格式建立数据库连接:
我们以默认的 这里我们通过 虽然可以通过这种方式比较便捷地指定密码信息,但是如果是连接到生产环境 MySQL 服务器,则不建议这么做,因为这样会导致密码的泄露,取而代之地,可以通过如下这种交互式方式输入密码发起连接请求: 这样一来,输入的密码信息就不可见了。 连接成功后,我们就可以通过这个交互式界面来操作 MySQL 数据库了。在进行下一步操作之前,我们先来看看 MySQL 客户端是如何建立与服务端的连接的。
数据库连接过程不管是 MySQL 服务端还是客户端,本质上都是计算机的进程,所以这个连接过程和通过浏览器(HTTP 客户端)请求指定网站(HTTP 服务端)连接建立过程并无二致,都是进程之间的通信。只不过后者是 HTTP 请求,基于 HTTP 协议,而前者是 TCP 请求,基于 TCP 协议。
学院君在网络协议的传输层协议中已经介绍过 TCP 通信的原理,既然是 TCP 请求,那么通信的双方 —— MySQL 客户端和服务端需要具备必要的进程信息:源 IP 地址、源端口号、目标 IP 地址、目标端口号,这样才能建立可靠连接,这里的目标 IP 地址就是 MySQL 服务端所在的 IP 地址,上面的示例是 所以从这个角度来说,通过 在完成经典的 TCP 握手后,服务端就要开始认证你的身份,这个时候用的就是你输入的用户名和密码:
数据库连接状态连接完成后,如果你没有后续的动作,这个连接就处于空闲状态,你可以在 其中的 Command 列显示为 Sleep 的行,表示一个空闲连接。 客户端如果太长时间没动静,连接器就会自动将它断开,这个时间是由参数
你可以通过 MySQL 配置文件修改这个默认配置( 如果连接被断开之后,客户端再次发送请求的话,就会收到一个错误提醒:
长连接与短连接在 MySQL 数据库中,还有长连接与短连接的概念:
这个和 HTTP 长连接和短连接的概念很像,并且显然,无论是 HTTP 还是 MySQL,使用长连接都能有效减少建立连接过程带来的损耗,进而提升性能。 不过在 MySQL 中,使用长连接会有一定的副作用 —— 有些时候会导致 MySQL 占用内存涨得特别快。这是因为 MySQL 在执行过程中临时使用的内存是管理在连接对象里面的,这些资源只有在连接断开的时候才会释放。对于这个问题,通常有两种解决方案:
关于 MySQL 客户端与服务端的连接,以及连接状态和类型我们就简单介绍到这里.
下篇教程,我们更进一步,来探究一条 SQL 查询语句在 MySQL 客户端和服务端之间都经历了哪些曼妙之旅, 最后把查询结果返回给客户端的。
后续补充 ... |
3.问题/补充
TBD |
4.参考
https://xueyuanjun.com/post/21913 //MySQL 数据库连接原理和性能优化 https://time.geekbang.org/column/article/102111 //05丨检索数据:你还在SELECT * 么? |
后续补充
...