怎么判断mysql读和写达到了瓶颈

怎么判断mysql读和写达到了瓶颈,第1张

1. MySQL处在高负载环境下,磁盘IO读写过多,肯定会占用很多资源,必然会CPU占用过高,所以可以用top命令查看MySQL所在服务器的cpu使用情况,从而分析是否有瓶颈

2. show processlist查看MySQL当前的执行状态,查看是否有大量的Sleep或Locked状态;

通过sysbench的oltp_read_write测试来模拟业务压力、以此来给指定的硬件环境配置一份比较合理的MySQL配置文件

环境介绍

硬件配置

请点击输入图片描述

软件环境

请点击输入图片描述

优化层级与指导思想

优化层级

MySQL数据库优化可以在多个不同的层级进行,常见的有:

SQL优化

参数优化

架构优化

本文重点关注:参数优化

指导思想

日志先行 -- 一个事务能否成功提交的关键是日志是否成功落盘,与数据没有太大的关系;也就是说对写的优化可以表述为各方面的资源向写 *** 作倾斜。

瓶颈分析 -- 通过show global status 的各个计数器的值基本上就能分析出当前瓶颈所在,再结合一些简单的系统层面的监控工具如top iostat 就能明确瓶颈。

整体性能是“读”&“写”之间的再平衡。

mysql有以下几种日志:

错误日志:     -log-err

查询日志:     -log

慢查询日志:   -log-slow-queries

更新日志:     -log-update

二进制日志: -log-bin  

是否启用了日志 

mysql>show variables like 'log_%' 

怎样知道当前的日志 

mysql>show master status 

显示二进制日志数目 

mysql>show master logs 

看二进制日志文件用mysqlbinlog 

shell>mysqlbinlog mail-bin.000001 

或者shell>mysqlbinlog mail-bin.000001 | tail 

在配置文件中指定log的输出位置. 

Windows:Windows 的配置文件为 my.ini,一般在 MySQL 的安装目录下或者 c:\Windows 下。 

Linux:Linux 的配置文件为 my.cnf ,一般在 /etc 下。 

在linux下:

Sql代码  

# 在[mysqld] 中输入

#log

log-error=/usr/local/mysql/log/error.log

log=/usr/local/mysql/log/mysql.log

long_query_time=2

log-slow-queries= /usr/local/mysql/log/slowquery.log

windows下:

Sql代码  

# 在[mysqld] 中输入

#log

log-error="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/error.log"

log="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/mysql.log"

long_query_time=2

log-slow-queries= "E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/slowquery.log"

开启慢查询 

long_query_time =2  --是指执行超过多久的sql会被log下来,这里是2秒 

log-slow-queries= /usr/local/mysql/log/slowquery.log  --将查询返回较慢的语句进行记录 

log-queries-not-using-indexes = nouseindex.log  --就是字面意思,log下来没有使用索引的query 

log=mylog.log  --对所有执行语句进行记录


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7271034.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-03
下一篇2023-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存