300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 通过日志分析mysql访问量 Mysql 慢查询和慢查询日志分析

通过日志分析mysql访问量 Mysql 慢查询和慢查询日志分析

时间:2019-12-24 04:58:42

相关推荐

通过日志分析mysql访问量 Mysql 慢查询和慢查询日志分析

众所周知,大访问量的情况下,可添加节点或改变架构可有效的缓解数据库压力,不过一切的原点,都是从单台mysql开始的。下面总结一些使用过或者研究过的经验,从配置以及调节索引的方面入手,对mysql进行一些优化。

第一步应该做的就是排查问题,找出瓶颈,所以,先从日志入手

开启慢查询日志

#打开服务

log_slow_queries = ON

mysql>show variables like “%slow%”; 查看慢查询配置,没有则在f中添加,如下

log-slow-queries = /data/mysqldata/slowquery.log #日志目录

long_query_time = 1 #记录下查询时间查过1秒

log-queries-not-using-indexes #表示记录下没有使用索引的查询

分析日志 – mysqldumpslow

分析日志,可用mysql提供的mysqldumpslow,使用很简单,参数可–help查看

# -s:排序方式。c , t , l , r 表示记录次数、时间、查询时间的多少、返回的记录数排序;

#ac , at , al , ar 表示相应的倒叙;

# -t:返回前面多少条的数据;

# -g:包含什么,大小写不敏感的;

mysqldumpslow -s r -t 10 /slowquery.log #slow记录最多的10个语句

mysqldumpslow -s t -t 10 -g "left join" /slowquery.log #按照时间排序前10中含有"left join"的

推荐用分析日志工具 – mysqlsla

wget /scripts/mysqlsla-2.03.tar.gz

tar zvxf mysqlsla-2.03.tar.gz

cd mysqlsla-2.03

perl Makefile.PL

make

make install

mysqlsla /data/mysqldata/slow.log

# mysqlsla会自动判断日志类型,为了方便可以建立一个配置文件“~/.mysqlsla”

# 在文件里写上:top=100,这样会打印出前100条结果。

我们可以通过tail -f查看日志文件。

$tail -f /var/lib/mysql//slowquery.log

# Time: 110107 16:22:11

# User@Host: root[root] @ localhost []

# Query_time: 9.869362 Lock_time: 0.000035 Rows_sent: 1 Rows_examined: 6261774

SET timestamp=1294388531;

select count(*) from ep_friends;

第一行,SQL查询执行的时间

第二行,执行SQL查询的连接信息

第三行记录了一些我们比较有用的信息

Query_time SQL执行的时间,越长则越慢

Lock_time 在MySQL服务器阶段(不是在存储引擎阶段)等待表锁时间

Rows_sent 查询返回的行数

Rows_examined 查询检查的行数

Slow Query日志,虽然帮助你记录了那些执行过了的SQL语句。但它不是万能的,意义可能没有你想象的那么大。它只告诉了你哪些语句慢,但是为什么慢?具体 原因,还是需要你自己去分析,不断的调试。也许,你只需要换一条更有效的sql语句,也许你只需简单地增加一个索引,但也有可能你需要调整你应用程序的设 计方案。比如,上面那条语句是很明显,它检查了600多万行数据。不幸的是,并不是每条语句都这么明显。也许还有别的原因,比如:

【说明】

queries total: 总查询次数 unique:去重后的sql数量

sorted by : 输出报表的内容排序

最重大的慢sql统计信息, 包括 平均执行时间, 等待锁时间, 结果行的总数, 扫描的行总数.

Count, sql的执行次数及占总的slow log数量的百分比.

Time, 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比.

95% of Time, 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间.

Lock Time, 等待锁的时间.

95% of Lock , 95%的慢sql等待锁时间.

Rows sent, 结果行统计数量, 包括平均, 最小, 最大数量.

Rows examined, 扫描的行数量.

Database, 属于哪个数据库

Users, 哪个用户,IP, 占到所有用户执行的sql百分比

Query abstract, 抽象后的sql语句

Query sample, sql语句

http://www.auu.name/716/index.html

脚本名称叫test.sh 入参三个: 1 2 3

运行test.sh 1 2 3后

$*为"1 2 3"(一起被引号包住)

$@为"1" "2" "3"(分别被包住)

$#为3(参数数量

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。