一、开启mysql自己的慢查询日志
1、查看慢日志参数设置
show VARIABLES like '%query%'
2、修改配置文件 vim /etc/my.cnf
[mysqld]
slow_query_log = 1 #是否开启慢查询日志记录
long_query_time = 1 #慢查询时间,单位秒
#log_output=table,file #慢查询记录位置,table则记录到mysql.slow_log表中或者slow_query_log_table参数指定的表中,file则记录到slow_query_log_file参数指定的文件中
log_output=file
#slow_query_log_table = xxx
slow_query_log_file = /var/log/mysql/mysql-slow.log
log_queries_not_using_indexes = 0 #是否记录没有使用索引的查询,无论是否满足慢查询的条件都会被记录,启用这个参数可能会导致慢查询日志文件迅速增长
3、创建慢查询文件目录并设置权限
mkdir -p /var/log/mysql
chown -R mysql:mysql /var/log/mysql
4、重启mysql
systemctl restart mysqld
5、开启后,可在指定的慢查询日志文件或慢查询日志表中查看慢查询日志
tailf /var/log/mysql/mysql-slow.log
select * from mysql.slow_log limit 0,10
二、在应用程序中开启慢查询日志
1、配置慢查询
package main
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"log"
"os"
"time"
)
func main() {
dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
//Logger: logger.Default.LogMode(logger.Info),
Logger: logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer(日志输出的地方)
logger.Config{
SlowThreshold: time.Second, // 设置慢查询的阈值为1秒
LogLevel: logger.Info, // 记录所有信息,包括慢查询
Colorful: true, // 彩色输出
},
),
})
}
2、查看慢查询日志
2024/05/01 12:00:00 D:/project/model.go:16 SLOW SQL >= 1ms
[1.616ms] [rows:100] select * from test where name like '%xiao%' order by id desc limit 100
查看慢日志
cat search.log | grep -A1 "SLOW SQL"