Chao's Blog Chao's Blog
首页
  • vue

    • vue路由
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • java
  • spring
  • springboot
  • springcloud
  • git
  • maven
  • nginx
  • tomcat
  • springmvc
  • jvm
  • 图数据库
  • mysql数据库
  • redis数据库
  • windows下docker安装nginx并挂载目录
  • linux命令
  • linux安装软件
  • linux脚本
  • idea
  • vscode
  • 归档
  • 综合项目

    • 若依项目
    • mall项目
  • java
  • mybatis
  • xxl-job
  • mybatis
GitHub (opens new window)

~chao

永远菜鸟,不断努力~
首页
  • vue

    • vue路由
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • java
  • spring
  • springboot
  • springcloud
  • git
  • maven
  • nginx
  • tomcat
  • springmvc
  • jvm
  • 图数据库
  • mysql数据库
  • redis数据库
  • windows下docker安装nginx并挂载目录
  • linux命令
  • linux安装软件
  • linux脚本
  • idea
  • vscode
  • 归档
  • 综合项目

    • 若依项目
    • mall项目
  • java
  • mybatis
  • xxl-job
  • mybatis
GitHub (opens new window)
  • cypher图数据

  • mysql数据库

    • mysql尚硅谷宋红康

    • 总结

    • mysql数据库备份与恢复

    • mysql日志

      • MySQL日志及分类
      • MySQL错误日志(Error Log)详解
      • MySQL二进制日志(Binary Log)详解
      • MySQL使用二进制日志还原数据库
      • MySQL通用查询日志(General Query Log)
      • MySQL慢查询日志(Slow Query Log)
      • MySQL设置日志输出方式
      • mysql性能优化

    • redis数据库

    • oracle数据库

    • 数据库
    • mysql数据库
    • mysql日志
    ~chao
    2023-01-29
    目录

    MySQL设置日志输出方式

    # MySQL设置日志输出方式

    MySQL 的查询日志支持写入到文件或写入数据表两种输出形式。启用了普通查询日志或慢查询日志功能后,可以选择让服务器把日志写入到日志文件、mysql 数据库中的日志表、或者同时写到这两个地方。

    可以通过以下命令查看日志输出类型:

    mysql> SHOW VARIABLES LIKE '%log_out%'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_output | FILE | +---------------+-------+ 1 row in set, 1 warning (0.08 sec)

    结果显示,日志输出类型为 FILE。

    要想在运行时更改日志输出目标,可以在启动服务器时,设置全局系统变量 log_output 的值,格式如下:

    SET GLOBAL log_output='value';

    value 的值可以是:

    • FILE:表示把日志写入到文件。如果未指定 log_output 的值,默认为 FILE。
    • TABLE:表示把日志写入到 mysql 数据库的 slow_log 或 general_log 表中。
    • MySQL 可以同时支持 2 种日志存储方式,配置的时候以逗号隔开,即 log_output='FILE,TABLE'。

    需要注意的是,系统变量 log_output 只确定了日志使用什么输出目标,并不会启用日志功能。

    相对于写入到文件,日志写入到数据表中要耗费更多的系统资源。因此,对于需要启用查询日志,又需要获得更高的系统性能,建议优先选择将日志写入到文件。

    日志表(slow_log 或 general_log)中的内容只允许查看,不允许修改,除非服务器自己进行更改。因此,你只能对日志表使用 SELECT 语句,不能使用 INSERT、DELETE 或 UPDATE 语句。不过,可以使用 TRUNCATE TABLE 语句来清空日志表。

    # 例 1

    首先设置日志写入到日志表,然后查询 test 数据库中 tb_student 数据表的记录,并查看 mysql 数据库中的 slow_log 表中的记录。SQL 语句和运行结果如下:

    mysql> SET GLOBAL log_output='TABLE'; Query OK, 0 rows affected (0.00 sec)

    mysql> SHOW VARIABLES LIKE '%log_out%'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_output | TABLE | +---------------+-------+ 1 row in set, 1 warning (0.01 sec)

    mysql> use test; Database changed mysql> SELECT * FROM tb_student; +----+--------+ | id | name | +----+--------+ | 1 | Java | | 2 | MySQL | | 3 | Python | +----+--------+ 3 rows in set (0.00 sec)

    mysql> SELECT * FROM mysql.slow_log \G *************************** 1. row *************************** start_time: 2020-06-04 15:25:40.030420 user_host: root[root] @ localhost [::1] query_time: 00:00:00.058887 lock_time: 00:00:00.000000 rows_sent: 0 rows_examined: 0 db: test last_insert_id: 0 insert_id: 0 server_id: 1 sql_text: TRUNCATE TABLE mysql.slow_log thread_id: 11 *************************** 2. row *************************** start_time: 2020-06-04 15:25:52.229014 user_host: root[root] @ localhost [::1] query_time: 00:00:00.000339 lock_time: 00:00:00.000000 rows_sent: 1 rows_examined: 0 db: test last_insert_id: 0 insert_id: 0 server_id: 1 sql_text: Init DB thread_id: 11 *************************** 3. row *************************** start_time: 2020-06-04 15:26:00.867649 user_host: root[root] @ localhost [::1] query_time: 00:00:00.000379 lock_time: 00:00:00.000115 rows_sent: 7 rows_examined: 7 db: test last_insert_id: 0 insert_id: 0 server_id: 1 sql_text: SELECT * FROM tb_student thread_id: 11 3 rows in set (0.00 sec)

    结果显示,超过慢查询日志指定时间的 SQL 语句都写入到了 mysql 数据库的 slow_log 表中。

    编辑 (opens new window)
    上次更新: 2024/01/26, 05:03:22
    MySQL慢查询日志(Slow Query Log)
    MySQL性能优化是什么,如何定位效率低下的SQL?

    ← MySQL慢查询日志(Slow Query Log) MySQL性能优化是什么,如何定位效率低下的SQL?→

    最近更新
    01
    python使用生成器读取大文件-500g
    09-24
    02
    Windows环境下 Docker Desktop 安装 Nginx
    04-10
    03
    使用nginx部署多个前端项目(三种方式)
    04-10
    更多文章>
    Theme by Vdoing | Copyright © 2022-2024 chaos | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式