1. 出现长时间执行的查询的原因
2. 长时间执行的查询带来的问题
3. 如何避免长时间执行的查询
4. 如何处理长时间执行的查询
4.1 DMS 处理会话
4.2 设置查询最长执行时间
4.3 创建事件自动清理长时间执行的查询
1. 出现长时间执行的查询的原因
在使用 MySQL 的过程中,由于某些原因,比如被 SQL 注入、SQL执行效率较差、D……
1. 功能和适用范围
功能:
降低 CPU 使用率
降低 IOPS 使用率(某些情况下)
减少查询响应时间,提高系统的吞吐量
适用范围:
表数据修改不频繁、数据较静态
查询(Select)重复度高
查询结果集小于 1 MB
注:
查询缓存并不一定带来性能上的提升,在某些情况下(比如查询数量大,但重复的查询很少)开启查询缓存会带……
1. Metadata lock wait 出现的场景
2. Metadata lock wait 的含义
3. 导致 Metadata lock wait 等待的活动事务
4. 解决方案
5. 如何避免出现长时间 Metadata lock wait 导致表上相关查询阻塞,影响业务
1. Metadata lock wait 出现的场景
创建、删除索引
修改表结构
表维护操作(optimize table、repair table 等)
删……
1. Innodb 引擎表行锁等待和等待超时发生的场景
2.Innodb 引擎行锁等待情况的处理
2.1 Innodb 行锁等待超时参数 innodb_lock_wait_timeout
2.2 大量行锁等待和行锁等待超时的处理a
1. Innodb 引擎表行锁等待和等待超时发生的场景
当一个 RDS MySQL 连接会话等待另外一个会话持有的互斥行锁时,会发生 Innodb 引擎表行锁……
1. 显式 lock table
2. 隐式 lock table
在 RDS MySQL 实例日常使用中,有些情况下会发现出现 Innodb 表级锁等待的情况,下面列出常见的2个原因。
1. 显式 lock table
执行了 lock tables tab_name read; 导致 DML 会话等待在表的表级锁上。
会话 1
lock tables tab_name read;
会话 2
会话 3
2. 隐式 lock t……
一个低效查询引发的思考
上次在做银行对账,上传对账单后,出现对账超时的情况。查看日志发现,最后一条日志记录停在了对 c2c_zwdb.t_file_count 的查询 sql 上。使用 show processlist 命令来查看当前 SQL 的执行情况,如下:
由上图可知,原来是发生锁表了 waiting for table level lock。
引发锁表的 sql 语句就是上……
1. 问题原因
1.1 应用负载(QPS)高
1.2. 查询执行成本(查询访问表数据行数 avg_lgc_io)高
2. 解决方法
2.1 应用负载(QPS)高
2.2 查询语句执行成本(查询访问表数据行数)高
3. 避免出现 CPU 使用率达到 100% 影响业务的一般原则
1. 问题原因:
应用提交的查询(包括数据修改操作)执行所需大量的逻辑读(……
mysql 在发现事务中的普通语句存在死锁后,将仅保留一个事务并允许其操作,同时清除其它死锁事务,退出事务状态。
若事务更新语句一次仅涉及一个分区,死锁的行存在于两个分区,那么死锁过程不会立即被检测出来。多个事务的死锁更新会请求锁,直到锁超时,然后由 mysql 通知更新 error。这个 error 结果不会令分区退出事……
内存 最大连接数
1G 300
2G 600
4G 1200
8G 2000
16G 4000
32G 8000
64G 16000
96G 24000
128G 32000
220G 64000
Linux 下 MySQL 无法访问问题排查基本步骤
1 查看 Linux 操作系统是否已经安装了 MySQL
2 检查状态
2.1 检测 MySQL 运行状态: service mysqld status
2.2 启动服务:
方法一:使用 service 命令启动 MySQL: service mysqld start
方法二:使用 mysqld 脚本来启动 MySQL:/etc/init.d/mysql start
方法三:使用 safe_mys……