MySQL -- 短连接 + 慢查询

栏目: 数据库 · 发布时间: 5年前

内容简介:gh-ost《MySQL实战45讲》
  1. max_connections :MySQL实例同时存在的连接数上限
  2. 当连接数超过 max_connections ,系统会 拒绝 接下来的连接请求,返回: Too many connections
    • 当连接被拒绝,从业务角度来看是 数据库不可用
  3. 如果机器 负载较高 ,处理现有请求的时间会变长,每个连接 保持的时间 也会变长
    • 如果再有新建连接的话,很容易触发 max_connections 的限制
  4. max_connections 的目的是 保护MySQL
    • 如果把 max_connections 设置得过大,更多的连接就会进来,导致系统负载会进一步加大
    • 大量的资源会耗费在 权限验证 等逻辑上,而已经 拿到连接的线程 会抢不到CPU资源去执行业务SQL
mysql> SHOW VARIABLES LIKE '%max_connections%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 2000  |
+-----------------+-------+

清理Sleep状态的连接

KILL CONNECTION :主动踢除 不需要保持 的连接(与 wait_timeout 的效果一样)

时刻 sission A session B session C
T BEGIN;
INSERT INTO t VALUES (1,1);
SELECT * FROM t WHERE id=1;
T+30s SHOW PROCESSLIST;
KILL CONNECTION
  1. 踢除 Sleep 状态的连接是 有损
  2. 如果断开sission A的连接,会 回滚事务
  3. 如果断开sission B的连接,没有任何影响
    • 优先断开 事务外空闲 的连接
    • 再考虑断开 事务内空闲 的连接

事务外空闲

MySQL -- 短连接 + 慢查询

trx_mysql_thread_idid=4 的线程还处在事务中

MySQL -- 短连接 + 慢查询

KILL CONNECTION

  1. 服务端执行 KILL CONNECTION id ,如果连接在此前处于 Sleep 状态,客户端是 不会立马知道
  2. 客户端如果发起 下一个请求 ,报错 ERROR 2006 (HY000): MySQL server has gone away
    • 因此,客户端(应用层)需要有 重连机制

减少连接过程的消耗

  1. 数据库 跳过权限验证阶段 风险极高
    • 重启数据库,启动参数 --skip-grant-tables
    • 跳过 所有 的权限验证阶段( 连接过程 + 语句执行过程
  2. MySQL 8.0开始,启用 --skip-grant-tables 参数,默认会启用 --skip-networking本地客户端

慢查询

索引没有设计好

古老方案

  1. Online DDLALTER TABLE
  2. 主库A,备库B
  3. 在备库B上执行 SET sql_log_bin=OFF不写binlog ), ALTER TABLE 加上索引
  4. 执行 主备切换 ,变成主库B,备库A
  5. 在备库A上执行 SET sql_log_bin=OFF不写binlog ), ALTER TABLE 加上索引

工具

gh-ost

语句没写好

-- Since MySQL 5.7
INSERT INTO query_rewrite.rewrite_rules (pattern, replacement, pattern_database)
    VALUES ("SELECT * FROM t WHERE id + 1 = ?", "SELECT * FROM t WHERE id = ? - 1", "test");

CALL query_rewrite.flush_rewrite_rules();

MySQL选错索引

  1. FORCE INDEX
  2. query_rewrite + FORCE INDEX

预先发现问题

  1. 测试环境配置: slow_query_log=ON + long_query_time=0
  2. SQL Review,留意 Rows_examined 是否与预期的一致
  3. 工具: pt-query-digest

参考资料

《MySQL实战45讲》

转载请注明出处:http://zhongmingmao.me/2019/02/20/mysql-short-conn-slow-query/

访问原文「 MySQL -- 短连接 + 慢查询 」获取最佳阅读体验并参与讨论


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机科学概论(第7版) (平装)

计算机科学概论(第7版) (平装)

J.Glenn Brookshear / 王保江 / 人民邮电出版社 / 2003-9 / 49.0

《计算机科学概论(第2版)》更新了部分内容,使其更加贴近于计算机科学领域内的最新趋势,这包括了网络安全、开源运动、关联存储、公钥加密、XML、Java和C#等内容。扩充了网络和Internet所覆盖的内容。一个程序用C#语言编写,还有C、C++和Java,作为语言的例子。不过整个方法依旧保持语言的独立。一起来看看 《计算机科学概论(第7版) (平装)》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码