前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开启查看Mysql数据库日志

开启查看Mysql数据库日志

作者头像
wo.
发布2021-06-15 15:09:40
5.9K0
发布2021-06-15 15:09:40
举报
文章被收录于专栏:了不得的专栏了不得的专栏

很多时候网站打开速度变慢,为了定位是否为数据库导致的,我们需要知道在访问网站的同时,站点执行了哪些SQL,每条SQL耗时多长。

为此,查看数据库日志是最直接的。

一般情况下,数据库日志默认是关闭的,因此需要先激活日志功能:

1.

使用root用户登陆到数据库后,检查“数据库日志”是否开启

代码语言:javascript
复制
SHOW VARIABLES LIKE 'general%';

# 这份日志会保存到数据库的安装目录, Centos7默认的目录是 /var/lib/mysql/

+------+-----------+  
| Variable_name | Value |  
+------+-----------+  
| general_log | OFF |  
| general_log_file | VM_211_224_centos.log |  
+------+-----------+

若为OFF,则开启之(这个选项的作用是把所有SQL操作打印到日志):

代码语言:javascript
复制
SET GLOBAL general_log='ON';
# 当调试完毕后记得关闭之,否则太耗服务器资源了

2.

另外,还有一个相关的“慢查询日志”,检查是否开启:

代码语言:javascript
复制
SHOW VARIABLES LIKE '%slow_query_log%';

# 这份日志会保存到数据库的安装目录, Centos7默认的目录是 /var/lib/mysql/
+---------+----+  
| Variable_name | Value |  
+---------+----+  
| slow_query_log | OFF |  
| slow_query_log_file | VM_211_224_centos-slow.log |  
+---------+----+

若为OFF,则开启之(这个选项的作用是把执行时间超过一定数值的SQL打印到日志):

代码语言:javascript
复制
SET GLOBAL slow_query_log='ON';
# 当调试完毕后记得关闭之,否则太耗服务器资源了

3.

无需重启数据库,直接刷新站点,发现 VM_211_224_centos.log 日志有内容,VM_211_224_centos-slow.log日志无内容(当然这是针对我的情况而言,mysql/mariadb默认超过10秒的SQL才是慢查询,后者没日志很可能就是因为并不存在这类SQL)。

4.

虽然 VM_211_224_centos.log 日志有内容,但也仅仅是一股脑把所有SQL列印出来而已,并不能反映每条SQL的执行时长。

但是这里可以通过tail -f实时直播日志的打印,以判断执行哪些SQL时会有停顿:

代码语言:javascript
复制
tail -10f /var/lib/mysql/VM_211_224_centos.log

刷新网站后,就能通过日志发现 哪个SQL在执行的时候出现卡顿。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.
  • 2.
  • 3.
  • 4.
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档