当前连接分布 show processlist
前端应用请求数据库不要使用root帐号!
Root帐号比其他普通帐号多一个连接数许可。
前端使用普通帐号,在too many connections的时候root帐号仍
可以登录数据库查询 show processlist!
记住,前端应用程序不要设置一个不叫root的root帐号来糊弄!
非root账户是骨子里的,而不是名义上的。
状态分布
不同状态代表不同的问题,有不同的优化目标。
参见如上范例。
雷同SQL的分布
是否较多雷同SQL出现在同一状态
当前是否有较多慢查询日志
是否锁定
影响结果集
频繁度分析
写频繁度
如果i/o压力高,优先分析写入频繁度
Mysqlbinlog 输出最新binlog文件,编写脚本拆分
最多写入的数据表是哪个
最多写入的数据SQL是什么
是否存在基于同一主键的数据内容高频重复写入?
涉及架构优化部分,参见架构优化-缓存异步更新
读取频繁度
如果cpu资源较高,而i/o压力不高,优先分析读取频繁度
程序中在封装的db类增加抽样日志即可,抽样比例酌情考虑,以不
显著影响系统负载压力为底线。
最多读取的数据表是哪个
最多读取的数据SQL是什么
该SQL进行explain 和set profiling判定
注意判定时需要避免query cache影响
比如,在这个SQL末尾增加一个条件子句 and 1=1 就可以
避免从query cache中获取数据,而得到真实的执行状态分
析。
是否存在同一个查询短期内频繁出现的情况
涉及前端缓存优化
抓大放小,解决显著问题
不苛求解决所有优化问题,但是应以保证线上服务稳定可靠为目标。
解决与评估要同时进行,新的策略或解决方案务必经过评估后上线。
总结
要学会怎样分析问题,而不是单纯拍脑袋优化
慢查询只是最基础的东西,要学会优化0.01秒的查询请求。