`
cnjarchen
  • 浏览: 43330 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MySQL 5.1.6以上版本动态开启慢查询日志

    博客分类:
  • sql
 
阅读更多
在slow_query_log (注意log_slow_querys参数已经废弃)值为ON的情况下(默认为OFF),当一条SQL语句执行的时间超过了long_query_time 预设的时间(默认为10s,同时精确到微秒)时,默认(log_output值为FIFL时)就会把这种慢查询记录到:slow_query_log_file值所指定的文件中。
mysql> select @@global.log_output;
+---------------------+
| @@global.log_output |
+---------------------+
| FILE                |
+---------------------+
1 row in set (0.00 sec)
注意在MySQL5.1就开始支持把慢查询的日志记录放到mysq.slow_log中,但需要设置log_output变量值为TABLE:
mysql> set @@global.log_output='TABLE';
Query OK, 0 rows affected (0.00 sec)
mysql> desc mysql.slow_log;
+----------------+------------------+------+-----+-------------------+-----------------------------+
| Field          | Type             | Null | Key | Default           | Extra                       |
+----------------+------------------+------+-----+-------------------+-----------------------------+
| start_time     | timestamp        | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| user_host      | mediumtext       | NO   |     | NULL              |                             |
| query_time     | time             | NO   |     | NULL              |                             |
| lock_time      | time             | NO   |     | NULL              |                             |
| rows_sent      | int(11)          | NO   |     | NULL              |                             |
| rows_examined  | int(11)          | NO   |     | NULL              |                             |
| db             | varchar(512)     | NO   |     | NULL              |                             |
| last_insert_id | int(11)          | NO   |     | NULL              |                             |
| insert_id      | int(11)          | NO   |     | NULL              |                             |
| server_id      | int(10) unsigned | NO   |     | NULL              |                             |
| sql_text       | mediumtext       | NO   |     | NULL              |                             |
+----------------+------------------+------+-----+-------------------+-----------------------------+
11 rows in set (0.01 sec)
注意,文件记录和写表记录只会有一种生效。

修改之前:
mysql> show variables like '%slow%';
+---------------------+------------------------------------------------+
| Variable_name       | Value                                          |
+---------------------+------------------------------------------------+
| log_slow_queries    | OFF                                            |
| slow_launch_time    | 2                                              |
| slow_query_log      | OFF                                            |
| slow_query_log_file | /usr/local/mysql-5.1.36/var/localhost-slow.log |
+---------------------+------------------------------------------------+
mysql>
4 rows in set (0.00 sec)
注意这个时候localhost-slow.log文件是不存在的:
mysql> system cat /usr/local/mysql-5.1.36/var/localhost-slow.log
cat: /usr/local/mysql-5.1.36/var/localhost-slow.log: No such file or directory
修改slow_query_log的方法:
mysql> warnings;
Show warnings enabled.
mysql> set @@global.log_slow_queries=ON;
Query OK, 0 rows affected, 1 warning (0.01 sec)
Warning (Code 1287): The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
注意已经不再使用log_slow_queries参数,用slow_query_log替代,这样修改slow_query_log时,log_slow_queries也会被隐性地修改:
mysql> set @@global.slow_query_log=ON;
Query OK, 0 rows affected (0.00 sec)
修改之后:
mysql> show variables like '%slow%';
+---------------------+------------------------------------------------+
| Variable_name       | Value                                          |
+---------------------+------------------------------------------------+
| log_slow_queries    | ON                                             |
| slow_launch_time    | 2                                              |
| slow_query_log      | ON                                             |
| slow_query_log_file | /usr/local/mysql-5.1.36/var/localhost-slow.log |
+---------------------+------------------------------------------------+
4 rows in set (0.00 sec)
这时localhost-slow.log文件已经建立:
mysql> system cat /usr/local/mysql-5.1.36/var/localhost-slow.log
/usr/local/mysql-5.1.36/libexec/mysqld, Version: 5.1.36-log (Source distribution). started with:
Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument

分析时我们可以直接查询慢查询日志,也可以通过mysqldumpslow命令(推荐)来解析这个文件:
[root@localhost var]# mysqldumpslow localhost-slow.log
Reading mysql slow query log from localhost-slow.log
Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows=0.0 (0), 0users@0hosts

我们可以通过sleep函数来做简单的测试:
如:select sleep(11);
分享到:
评论

相关推荐

    mysql5.1.6 免安装版 配置

    7. **日志管理**:开启错误日志和慢查询日志,可以帮助我们监控MySQL的运行状态和优化SQL语句。`log_error`设置错误日志文件,`slow_query_log`开启慢查询日志。 8. **备份与恢复**:定期备份数据库非常重要,可以...

    MySQL日志文件??慢查询日志

    从MySQL 5.1.6版本开始,慢查询日志不仅可以写入文件,还可以存储在数据库中的特定表(通过设置`log_output`参数为`TABLE`)。这个参数是动态的,可以在运行时更改。例如,可以使用`SET GLOBAL log_output='TABLE'`...

    MySQL中开启和使用通用查询日志的实例教程

    开启通用查询日志首先需要确认MySQL的版本,因为从5.1.6版本开始,MySQL支持动态更改日志设置。例如,如果你的MySQL版本是5.1.37,你可以通过执行`SELECT version()`来检查。一旦确定版本,你可以通过以下步骤开启...

    mysql中general_log日志知识点介绍

    在MySQL 5.0之前,启用`general_log`通常需要重启服务,但从5.1.6版本开始,MySQL引入了动态配置的能力,允许在不重启的情况下开启或关闭日志,同时可以选择将日志输出到文件或是存储在数据库表中。这样提供了更大的...

    Windows下nginx+php+mysql安装和配置.docx

    - 编辑 `my.ini` 文件(如果没有,可以在 MySQL 的安装目录创建),添加或修改 MySQL 的配置信息,如设置数据存储目录、日志文件等。 通过以上步骤,可以在 Windows 系统下成功安装和配置 Nginx、PHP 和 MySQL,...

    win2003+asp+php+mysql+zend+phpmyadmin服务器环境详细+安全维护.doc

    - **日志记录**: 开启并监控错误日志,及时发现潜在的安全威胁。 **4. PHP 安全配置**: - **禁用危险函数**: 在 `php.ini` 文件中禁用如 `eval()`、`exec()` 等危险函数。 - **限制上传文件类型**: 控制允许上传的...

    syslog-ng+phpmyadmin+mysqlforcentos.pdf

    【知识点详解】 本文主要介绍如何在CentOS 5.8环境下搭建syslog...通过以上步骤,你将在CentOS系统上成功搭建了一个集syslog-ng日志收集、MySQL日志存储以及phpMyAdmin日志管理的环境,便于进行系统日志的监控和分析。

    RHEL5+postfix+webmail+dovecot+mysql+postfixadmin

    根据提供的文档内容,我们可以梳理出一个较为详细的关于“RHEL5+Postfix+Webmail+Dovecot+MySQL+PostfixAdmin”的知识点介绍。 ### 一、环境搭建基础 #### 1. RHEL5(Red Hat Enterprise Linux 5) - **版本**:...

    使用mysql事件调度器定时删除binlog

    MySQL事件调度器(Event Scheduler)是自MySQL 5.1.6版本引入的一个功能,它允许数据库管理员在MySQL内部创建和管理定时任务,而无需依赖操作系统级别的计划任务服务。这一特性大大提高了灵活性,尤其是在那些需要...

    mysql 定时任务的实现与使用方法示例

    在MySQL 5.1.6版本之后,引入了事件调度器(Event Scheduler),使得用户无需依赖操作系统级别的cron job或其他外部工具,就能在数据库内部实现定时任务。 一、查看事件调度器状态 要检查MySQL事件调度器是否已经...

    在myeclipse(java)中如何连接Oracle数据库.pdf

    - 提到的数据库驱动jar包集合中还包括了SQL Server 2000/2005的驱动(如msbase.jar, mssqlserver.jar, msutil.jar, sqljdbc.jar)以及MySQL的驱动(如mysql-connector-java-5.1.6-bin.jar)。这些驱动是对应数据库...

Global site tag (gtag.js) - Google Analytics