mysql性能瓶颈排查 top/free/vmstat/sar/mpstat

  • 查看mysqld进程的cpu消耗占比
  • 确认mysql进程的cpu消耗是%user, 还是sys%高
  • 确认是否是物理内存不够用了
  • 确认是否有swap产生
top (%cpu  load  %MMEM)
free -gt
vmstat -S m 1 (procs io cpu)
sar -u 1 (%user)
sar -d 1

如何优化

  • 硬件优化
  • 查看mysql线程状态 show [full] processlist

    • 长时间的Sending data

      从引擎层读取数据返回给server端
      
      长时间存在的原因:
      1 没有合适的索引 查询效率低下
      2 读取大量数据 读取缓慢
      3 系统负载高 读取缓慢 如何做:
      1 加上合适的索引
      2 改写sql
      3 增加LIMIT限制每次读取量
      4 检查&升级IO设备性能
    • 长时间等待MDL锁 (waiting for table metadata lock)

      原因:
      DDL被阻塞 进而阻塞其他后续sql
      DDL之前的sql长时间未结束 如何做:
      1 提高每条sql的效率
      2 kill掉长时间运行的sql
      3 把DDL放在夜间低谷时段
      4 采用pt-osc执行DDL
    • 长时间的sleep

    1. 占用连接数
    2. 消耗内存未释放
    3. 可能有行锁(甚至是表锁未释放)

      如何做:
      1 适当调低timeout
      2 主动kill超时不活跃连接
      3 定期检查锁、锁等待
      4 可以利用pt-kill工具

    • 其他状态

      Copy to tmp table [on disk]
      执行alter table修改表结构,需要生成临时表
      建议放在夜间低谷进行, 或者用pt-osc Creating tmp table
      常见于group by没有索引的情况
      需要拷贝数据到临时表[内存/磁盘上]
      执行计划中会出现Using temporary关键字
      建议创建合适的索引,消除临时表 Creating sort index
      常见于order by没有索引的情况
      需要进行filesort排序
      执行计划中会出现Using filesort关键字
      建议创建排序索引

其他排除方法

  • use information_schema; SELECT * from innodb_lock_waits;
  • show engine innodb status;
  • 测试环境调低long_query_time的值 开启log_queries_not_using_indexes 分析慢日志

mysql性能排查思路的更多相关文章

  1. mysql 性能优化思路 - mysqldumpslow /tmp/mysql-slow.log 字符集 utf-8 create database

    提高MySQL服务的性能,响应速度: 1.替换有问题的硬件:内存,CPU,磁盘 2.服务的配置参数的配置 3.SQL的优化 .服务参数的配置: 1.1 连接数,连接超时: max_connection ...

  2. 一份平民化的MySQL性能优化指南

    前言 近期在重新学习总结MySQL数据库性能优化的相关知识,本文是根据自己学习以及日常性能测试调优过程中总结的经验整理了一份平民化的优化指南,希望对大家在进行MySQL调优分析时有帮助!   MySQ ...

  3. Mysql 高负载排查思路

    Mysql 高负载排查思路 发现问题 top命令 查看服务器负载,发现 mysql竟然百分之两百的cpu,引起Mysql 负载这么高的原因,估计是索引问题和某些变态SQL语句. 排查思路 1. 确定高 ...

  4. redmine在linux上的mysql性能优化方法与问题排查方案

    iredmine的linux服务器mysql性能优化方法与问题排查方案     问题定位:   客户端工具: 1. 浏览器inspect-tool的network timing工具分析   2. 浏览 ...

  5. MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案

    第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...

  6. Linux 服务器性能问题排查思路

    一个基于 Linux 操作系统的服务器运行的同时,也会表征出各种各样参数信息.通常来说运维人员.系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你的程序非正常工作的时候, ...

  7. MySQL性能调优思路

    1.MySQL性能调优思路 如果一台服务器出现长时间负载过高 /周期性负载过大,或偶尔卡住如何来处理? 是周期性的变化还是偶尔问题?是服务器整体性能的问题, 还是某单条语句的问题? 具体到单条语句, ...

  8. 排查一般MySQL性能问题

    排查一般MySQL性能问题,通常要记录下面几项信息: 1.mysql> show processlist; 2.mysql> show engine innodb status\G 3.表 ...

  9. MySql CPU彪高到百分之1000的排查思路

    You need to enable JavaScript to run this app.   原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等情况,可查看当前链接:https:// ...

随机推荐

  1. winform项目打包成可安装程序(vs2015)

    1.新建安装和部署项目      如果是初始使用并且原来没有下载过,会被所引导一个下载界面http://learn.flexerasoftware.com/content/IS-EVAL-Instal ...

  2. ios调用系统相册、相机 显示中文标题、本地化多语言支持

    因为调用系统相册.相机需要显示中文,所以搞了半天才知道是在Project->info->Custom ios Target Properties 添加 Localizations 并加入C ...

  3. 总结:spring 的ioc 知识点

    1. spring ioc的优点    解耦,对象的创建不直接在代码里生成(不方便修改) ,交由容器创建.... 2.IOC 和 DI 的区别        依赖关系:A类 里 要调用B类  如 se ...

  4. UVa - 10341

    Solve the equation:p ∗ e ^−x + q ∗ sin(x) + r ∗ cos(x) + s ∗ tan(x) + t ∗ x ^2 + u = 02 + u = 0where ...

  5. 房屋贷款计算器 Mortgage Calculator

    闲暇时间开发了一款工具 - 房屋贷款计算器 Mortgage Calculator 有需要的可以下载来试试. JACK NJ @ 2017

  6. sgu 125 Shtirlits dfs 难度:0

    125. Shtirlits time limit per test: 0.25 sec. memory limit per test: 4096 KB There is a checkered fi ...

  7. Let's call it a "return"

    Preface Long time no see. For some reason that I failed to keep updating this blog, which is really ...

  8. maven pom.xml中的 build说明

    在Maven的pom.xml文件中,Build相关配置包含两个部分,一个是<build>,另一个是<reporting>,这里我们只介绍<build>. 1. 在M ...

  9. django 增删改查操作 数据库Mysql

    下面介绍一下django增删改查操作: 1.view.py # -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom dja ...

  10. 利用require.js实现javascript模块化加载

    这种引入很看到很想死吧! <script src="1.js"></script> <script src="2.js">& ...