当前位置:天才代写 > tutorial > 数据库教程 > Mysql优化技巧 慢日志分析

Mysql优化技巧 慢日志分析

2021-03-03 12:22 星期三 所属: 数据库教程 浏览:116

假如打开了mysql的慢日志,那麼该日志会纪录下全部mysql觉得高效率低的sql语句,我们可以根据查询慢日志获得这种句子并开展提升

MySQL的慢查询日志较为粗略地,主要是根据下列3项基础的信息内容。 
Query_time:查看用时。 

Rows_examined:查验了是多少条纪录。 

Rows_sent:回到了是多少行纪录(結果集)。 之上3个值能够大概考量一条查看的成本费。 假如查验了很多纪录,而只回到不大的結果集,则通常代表着查看品质不佳。

别的信息内容包含以下几个方面。 
Time:实行SQL的开始时间。 
Lock_time:等候tablelock的時间,留意InnoDB的行锁等候是不容易反映在这儿的。 
[email protected]:执行查询的客户和手机客户端IP。

能够应用mysqldumpslow指令得到慢查询 日志引言来解决慢查询日志,或是应用更强的第三方专用工具pt-query-digest。,慢查询日志里的慢查询不一定便是欠佳SQL,还可能是受别的的查看危害,或是受服务器资源限定所造成的慢查询。 例如下边的事例,对话被堵塞了,事实上是一个行锁等候50s请求超时,随后纪录到慢查询日志里。

A 查询是不是打开慢日志:

 show variables like \"%query_log%\";\n\n+---------------------+-------------------------+\n| Variable_name       | Value                   |\n+---------------------+-------------------------+\n| slow_query_log      | OFF                     |\n| slow_query_log_file | VM_0_13_centos-slow.log |       #   这个是慢日志储存的途径\n+---------------------+-------------------------+"}">MariaDB [(none)]> show variables like "%query_log%";

 --------------------- ------------------------- 
| Variable_name       | Value                   |
 --------------------- ------------------------- 
| slow_query_log      | OFF                     |
| slow_query_log_file | VM_0_13_centos-slow.log |       #   这个是慢日志储存的途径
 --------------------- ------------------------- 

发觉沒有开启

假如环境变量或运行主要参数沒有得出file_name值,慢查询日志将默认设置取名为“IP地址-slow.log”,假如得出了文件夹名称,但并不是相对路径名,文档则载入数据信息文件目录。

像这儿,慢日志便是载入数据信息文件目录

我们可以在MySQL手机客户端下应用指令

SHOW VARIABLES LIKE '%query_time%'

查询静态变量long_query_time。全部实行時间超出long_query_time秒的SQL句子都是会被纪录到慢查询日志里。

提议将这一時间设为一秒

怎样打开慢日志并设定储存途径和请求超时時间:
在环境变量的 [mysqld] 下加上下边一两句:

slow_query_log = 1
slow_query_log_file = /tmp/mysql-slow.log
long_query_time = 1

就可以

很有可能并不是立即在my.cnf 中加上,只是在其引进的别的环境变量中才可以寻找[mysqld]

随后重新启动一下mysql服务项目


B 剖析慢查询日志

假如慢查询日志內容过多,看文档是难以看得出物品的,能够应用mysqldumpslow或是pt-query-digest专用工具
    
mysqldumpslow:

mysqldumpslow -t10 相对路径    # 获得浏览时间最多的10条句子,共存到特定途径中
mysqldumpslow -s c -t10 相对路径  # 浏览频次数最多的10条句子
mysqldumpslow -s r -t10 相对路径  # 浏览条最多的10条


pt-query-digest:

最先安裝pt-query_digest指令

wget www.percona.com/get/pt-query-digest chmod u x pt-query-digest    # 下载pt-query-digest指令
chmod u x pt-query-digest

基础指令文件格式
pt-query-digest [options] [files] [dsn]

普遍使用方法:假定慢日志途径为 /tmp/mysql-slow.log

 slow.rtf      #立即剖析慢查询\npt-query-digest --since 1800s /tmp/mysql-slow > slow.rtf   #剖析三十分钟内的慢查询\npt-query-digest --since '2020-01-01 00:00:00' --until '2020-01-02 00:00:00' /tmp/mysql-slow > slow.rtf    #剖析特定范畴内時间的慢查询\npt-query-digest --limit 95%:20 /tmp/mysql-slow > slow.rtf    #表明95%的最烂查看或是20个最烂查看"}">pt-query-digest /tmp/mysql-slow.log > slow.rtf      #立即剖析慢查询
pt-query-digest --since 1800s /tmp/mysql-slow > slow.rtf   #剖析三十分钟内的慢查询
pt-query-digest --since '2020-01-01 00:00:00' --until '2020-01-02 00:00:00' /tmp/mysql-slow > slow.rtf    #剖析特定范畴内時间的慢查询
pt-query-digest --limit 95%:20 /tmp/mysql-slow > slow.rtf    #表明95%的最烂查看或是20个最烂查看

相对主要参数表述: 
Exectime:实行時间。 
Lock time:表锁的時间。 
Rows sent:回到的結果集纪录数。 
Rowsexamine:具体扫描仪的纪录数。 
Query size:运用和数据库查询互动的查看文字尺寸。 
Rank:全部查看日志剖析结束后,此查看的排列。 
Query ID:查看的标志字符串数组。 
Responsetime:总的响应速度,及其总占有率。一般低于5%能够无需关心。 
Calls:查看被启用实行的频次。 
R/Call:每一次实行的均值响应速度。 
Apdx:应用软件的特性指数值评分。(Apdex回应的時间越长,评分越低。) 
V/M:响应速度的标准差平均值比(基因变异数对平均值比,变异系数)。可表明样版的分散化水平,这一值越大,通常是越非常值得考 虑提升的目标。 
Item:查看的简易表明,包含查看的种类和所涉及到的表。

自然该指令还可以用以剖析mysql二进制日志文档,留意,二进制日志并不是mysql服务项目的日志,二进制日志一般放到数据信息文件目录,能够根据show master status查询是不是打开二进制日志

 /tmp/012639.log   # 将二进制文件变为文档格式\npt-query-digest --type binlog /tmp/012639.log > binlog.rtf"}">mysqlbinlog mysql-bin.012639 > /tmp/012639.log   # 将二进制文件变为文档格式
pt-query-digest --type binlog /tmp/012639.log > binlog.rtf

针对之上剖析指令,一样能够再加上主要参数挑选信息内容,如“–since”、“–until”。

代码段 小构件

 

    关键字:

天才代写-代写联系方式