重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在日常开发当中,经常会遇到页面打开速度极慢的情况,通过排除,确定了,是数据库的影响,为了迅速查找具体的SQL,可以通过Mysql的日志记录方法。--打开sql执行记录功能setgloballog_output='TABLE';--输出到表setgloballog=ON;--打开所有命令执行记录功能general_log,所有语句:成功和未成功的.setgloballog_slow_queries=ON;--打开慢查询sql记录slow_log,执行成功的:慢查询语句和未使用索引的语句setgloballong_query_time=0.1;--慢查询时间限制(秒)setgloballog_queries_not_using_indexes=ON;--记录未使用索引的sql语句--查询sql执行记录select*frommysql.slow_logorderby1;--执行成功的:慢查询语句,和未使用索引的语句select*frommysql.general_logorderby1;--所有语句:成功和未成功的.--关闭sql执行记录setgloballog=OFF;setgloballog_slow_queries=OFF;--long_query_time参数说明--v4.0,4.1,5.0,v5.1到5.1.20(包括):不支持毫秒级别的慢查询分析(支持精度为1-10秒);--5.1.21及以后版本:支持毫秒级别的慢查询分析,如0.1;--6.0到6.0.3:不支持毫秒级别的慢查询分析(支持精度为1-10秒);--6.0.4及以后:支持毫秒级别的慢查询分析;通过日志中记录的Sql,迅速定位到具体的文件,优化sql看一下,是否速度提升了呢?
成都创新互联公司凭借在网站建设、网站推广领域领先的技术能力和多年的行业经验,为客户提供超值的营销型网站建设服务,我们始终认为:好的营销型网站就是好的业务员。我们已成功为企业单位、个人等客户提供了成都做网站、网站建设服务,以良好的商业信誉,完善的服务及深厚的技术力量处于同行领先地位。
mysql有以下几种日志: 错误日志: -log-err 查询日志: -log 慢查询日志: -log-slow-queries 更新日志: -log-update 二进制日志: -log-bin 在mysql的安装目录下,打开my.ini,在后面加上上面的参数,保存后重启mysql服务就行了。 例如:#Enter a name for the binary log. Otherwise a default name will be used. #log-bin=#Enter a name for the query log file. Otherwise a default name will be used. #log=#Enter a name for the error log file. Otherwise a default name will be used. log-error=#Enter a name for the update log file. Otherwise a default name will be used. #log-update= 上面只开启了错误日志,要开其他的日志就把前面的“#”去掉 查看命令:①show variables like 'log_%';查看所有的log命令 ②show variables like 'log_bin';查看具体的log命令
开启mysql慢查询日志查看配置:
//查看慢查询时间
show
variables
like
"long_query_time";默认10s
//查看慢查询配置情况
show
status
like
"%slow_queries%";
//查看慢查询日志路径
show
variables
like
"%slow%";
修改配置文件
在my.ini中加上下面两句话
log-slow-queries
=
d:\wamp\mysql_slow_query.log
long_query_time=5
第一句使用来定义慢查询日志的路径(因为是windows,所以不牵涉权限问题)
第二句使用来定义查过多少秒的查询算是慢查询,我这里定义的是5秒
第二步:查看关于慢查询的状态
执行如下sql语句来查看mysql慢查询的状态
show
variables
like
'%slow%';
执行结果会把是否开启慢查询、慢查询的秒数、慢查询日志等信息打印在屏幕上。
第三步:执行一次慢查询操作
其实想要执行一次有实际意义的慢查询比较困难,因为在自己测试的时候,就算查询有20万条数据的海量表,也只需要0.几秒。我们可以通过如下语句代替:
select
sleep(10);
第四步:查看慢查询的数量
通过如下sql语句,来查看一共执行过几次慢查询:
show
global
status
like
'%slow%';
mysql日志的配置:
注意:这些日文件在mysql重启的时候才会生成
#记录所有sql语句
log=e:/mysqllog/mysql.log
#记录数据库启动关闭信息,以及运行过程中产生的错误信息
log-error=e:/mysqllog/myerror.log
#
记录除select语句之外的所有sql语句到日志中,可以用来恢复数据文件
log-bin=e:/mysqllog/bin
#记录查询慢的sql语句
log-slow-queries=e:/mysqllog/slow.log
#慢查询时间
long_query_time=0.5
这是一个慢查询日志的展示工具,能够帮助 DBA 或者开发人员分析数据库的性能问题,给出全面的数据摆脱直接查看 slow-log。QAN(Query Analytics)
PMM 目前有 2 个版本,但是对于 QAN 来说其大致由三部分组成:
QAN-Agent(client):负责采集 slow-log 的数据并上报到服务端
QAN-API(server):负责存储采集的数据,并对外提供查询接口
QAN-APP:专门用来展示慢查询数据的 grafana 第三方插件
1. 数据流转
slow-log -- QAN-Agent -- QAN-API -- QAN-APP(grafana)
2. pmm1 架构图
3. pmm2 架构图
1)怎么查看mysql是否启用了日志
mysqlshow variables like 'log_bin';
2)怎样知道当前的日志
mysql show master status;
3)如何查看当前的二进制日志,可以使用mysqlbinlog的的工具,命令如下:
shellmysqlbinlog mail-bin.000001(要写绝对问题路径 d://)
或者shellmysqlbinlog mail-bin.000001 | tail
4)mysql有以下几种日志:
错误日志:
-log-err
查询日志:
-log
慢查询日志:
-log-slow-queries
更新日志:
-log-update
二进制日志:
-log-bin
在mysql的安装目录下,打开my.ini,在后面加上上面的参数,保存后重启mysql服务就行了。
例如:
#Enter a name for the error
log file. Otherwise a default
name will be used.
log-error=err.log
#Enter a name for the query
log file. Otherwise a default name will be used.
#log=
#Enter a name for the slow
query log file. Otherwise a default name will be used.
#log-slow-queries=
#Enter a name for the update
log file. Otherwise a default name will be used.
#log-update=
#Enter a name for the binary
log. Otherwise a default name will be used.
#log-bin=
上面只开启了错误日志,要开其他的日志就把前面的“#”去掉。
long_query_time =2--
这里设置慢日志的最大实现是指执行超过多久的sql会被log下来,这里是2秒
log-slow-queries=slowqueris.log --将查询返回较慢的语句进行记录,这里设置慢日志的名称
log-queries-not-using-indexes
= nouseindex.log --就是字面意思,log下来没有使用索引的query
5)下面是配置日志的几种方式,不一定全都要配置,请根据自身需求选择性配置
log=mylog.log
--对所有执行语句进行记录
log-error=log-error.log
log=log-query.log
log-queries-not-using-indexes
log-warnings=2
log-slow-queries=log-slow-query.log
log-update=log-update.log
long_query_time=2
1、首先确认你日志是否启用了mysqlshow variables like 'log_bin'。
2、如果启用了,即ON,那日志文件就在mysql的安装目录的data目录下。
3、怎样知道当前的日志mysql show master status。
4、看二进制日志文件用mysqlbinlog,shellmysqlbinlog mail-bin.000001或者shellmysqlbinlog mail-bin.000001 | tail,Windows 下用类似的。
MySQL的日志操作:
1、首先,登陆mysql后,执行sql语句:show variables like 'log_bin'。
2、#错误日志log-errol开启方式:在my.ini的[mysqld]选项下:添加代码:log-error=E:\log-error.txt。
记录内容:主要是记录启动、运行或停止mysqld时出现的致命性问题,都是系统级的错误记录。
3、#查询日志:log,开启方式:在my.ini的[mysqld]选项下:添加代码:log=E:/mysql_log.txt。
4、#二进制日志:log-bin,开启方式:在my.ini的[mysqld]选项下:添加代码:log-bin=E:/mysql_log_bin,记录内容:主要是记录所有的更改数据的语句,可使用mysqlbinlog命令恢复数据。