文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

1. select语句执行过程-网络通信

2015-06-19 21:19

关注

1. select语句执行过程-网络通信

执行过程

MySQL 是支持多种通信协议的,可以使用同步/异步的方式,支持长连接/短连接。

1.同步/异步

异步的问题

默认是同步,即客户端需要等mysql服务器的响应,也是符合大多数情况的。

2. 长连接/短连接

短连接就是操作完毕以后,马上 close 掉。长连接可以保持打开,减少服务端创建和释放连接的消耗,后面的程序访问的时候还可以使用这个连接。一般我们会在连接池中使用长连接。

相关命令

2.1.查询连接超时时间

show global variables like "wait_timeout"; -- 非交互式超时时间, 如 JDBC 程序
show global variables like "interactive_timeout"; -- 交互式超时时间, 如数据库工具

默认都是 28800 秒,8 小时。

2.2.查询和设置连接状态

2.2.1 查询连接状态
show global status like "Thread%";
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_cached    | 649   |  <—当前被缓存的空闲线程的数量
| Threads_connected | 93    | <—正在使用(处于连接状态)的线程
| Threads_created   | 742   |  <—服务启动以来,创建了多少个线程
| Threads_running   | 5     | <—正在忙的线程(正在查询数据,传输数据等等操作)
+-------------------+-------+
2.2.2 查看开机起来数据库被连接了多少次
show status like "%connections%";
show global status like "%connections%";
+-----------------------------------+---------------------+
| Variable_name                     | Value               |
+-----------------------------------+---------------------+
| Connection_errors_max_connections | 0                   |
| Connections                       | 101395055           |   <–服务启动以来,历史连接数
| Max_used_connections              | 742                 |
| Max_used_connections_time         | 2018-08-21 15:42:38 |
+-----------------------------------+---------------------+
2.2.3 设置thread_cache_size

通过连接线程池的命中率来判断设置值thread_cache_size是否合适, 命中率超过90%以上,设定合理。 (Connections - Threads_created) / Connections * 100 %>=90%

2.3 查询执行状态

 SHOW PROCESSLIST;

2.4查询和设置最大连接数

查看配置

show variables like "max_connections";

在 5.7 版本中默认是 151 个,最大可以设置成 16384(2^14)。

设置配置

set global max_connections = 1000;

3.通信协议

1.Unix Socket。

2. TCP/IP

mysql -h192.168.8.211 -uroot -p123456

我 们 的 编 程 语 言 的 连 接 模 块 都 是 用 TCP 协 议 连 接 到 MySQL 服 务 器 的 , 比 如 mysql-connector-java-x.x.xx.jar。

3. 命名管道(Named Pipes)

4. 内存共享(Share Memory)

这两种通信方式只能在 Windows 上面使用,一般用得比较少。

4.通信方式

SQL命令一次性发送

客户端发送 SQL 语句给服务端的时候,(在一次连接里面)数据是不能分成小块发送的,不管你的 SQL 语句有多大,都是一次性发送 比如我们用 MyBatis 动态 SQL 生成了一个批量插入的语句,插入 10 万条数据,values后面跟了一长串的内容,或者 where 条件 in 里面的值太多,会出现问题。 相关配置max_allowed_packet,默认4M

执行结果一次性发送

服务端来说,也是一次性发送所有的数据,不能因为你已经取到了想要的数据就中断操作,这个时候会对网络和内存产生大量消耗

#参考资料 1.https://mp.weixin.qq.com/s/PEk97JyIlUexuAjFr2pmiw

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯