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 -- 短连接 + 慢查询 」获取最佳阅读体验并参与讨论


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

查看所有标签

猜你喜欢:

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

数据结构与算法分析(C++版)(第3版)

数据结构与算法分析(C++版)(第3版)

Clifford A. Shaffer / 张铭、刘晓丹、等译 / 电子工业出版社 / 2013 / 59.00元

本书采用当前流行的面向对象的C++程序设计语言来描述数据结构和算法, 因为C++语言是程序员最广泛使用的语言。因此, 程序员可以把本书中的许多算法直接应用于将来的实际项目中。尽管数据结构和算法在设计本质上还是很底层的东西, 并不像大型软件工程项目开发那样, 对面向对象方法具有直接的依赖性, 因此有人会认为并不需要采用高层次的面向对象技术来描述底层算法。 但是采用C++语言能更好地体现抽象数据类型的......一起来看看 《数据结构与算法分析(C++版)(第3版)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具