- 浏览: 43330 次
- 性别:
- 来自: 深圳
文章分类
最新评论
在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);
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);
发表评论
-
mysql的binlog恢复
2018-08-14 15:01 5611.在my.cnf的mysqld下加如下配置 serve ... -
centos7自定义安装mysql5.7
2017-12-15 18:12 4681.查找卸载原有的mysql 方法1 rpm -qa| ... -
命令行创建MySQL用户
2015-06-24 17:33 1320抄自:http://www.linuxidc.com/Lin ... -
Mysql InnoDB锁
2015-06-23 16:50 819抄自:http://www.cnblogs.com/qq78 ... -
MySQL Innodb表导致死锁日志情况分析与归纳
2015-06-23 16:14 651抄自:http://www.azumi.cc/2 ... -
查看mysql数据库状态
2014-06-27 10:13 8691, 查看MySQL服务器配置 ... -
mysql查询缓存
2014-02-19 17:48 7261.系统变量 have_query_cache 设置查询缓存是 ... -
mysql命令备忘
2012-09-05 16:49 759select max(customercode+0) from ... -
MySQL日志
2012-09-06 11:13 6601.错误日志 -log-err 记录着m ... -
mysql5.1中清空slow_log表
2012-09-05 16:25 2933因为mysql5.1以上mysql 的 slow_log 可以 ... -
MySQL中DELETE和TRUNCATE TABLE的区别
2012-09-05 16:18 782MySQL DELETE语句和TRUNCATE TABLE语句 ... -
Group by和Having
2012-05-16 12:04 648在介绍GROUP BY 和 HAVING 子句前,我们 ...
相关推荐
7. **日志管理**:开启错误日志和慢查询日志,可以帮助我们监控MySQL的运行状态和优化SQL语句。`log_error`设置错误日志文件,`slow_query_log`开启慢查询日志。 8. **备份与恢复**:定期备份数据库非常重要,可以...
从MySQL 5.1.6版本开始,慢查询日志不仅可以写入文件,还可以存储在数据库中的特定表(通过设置`log_output`参数为`TABLE`)。这个参数是动态的,可以在运行时更改。例如,可以使用`SET GLOBAL log_output='TABLE'`...
开启通用查询日志首先需要确认MySQL的版本,因为从5.1.6版本开始,MySQL支持动态更改日志设置。例如,如果你的MySQL版本是5.1.37,你可以通过执行`SELECT version()`来检查。一旦确定版本,你可以通过以下步骤开启...
在MySQL 5.0之前,启用`general_log`通常需要重启服务,但从5.1.6版本开始,MySQL引入了动态配置的能力,允许在不重启的情况下开启或关闭日志,同时可以选择将日志输出到文件或是存储在数据库表中。这样提供了更大的...
- 编辑 `my.ini` 文件(如果没有,可以在 MySQL 的安装目录创建),添加或修改 MySQL 的配置信息,如设置数据存储目录、日志文件等。 通过以上步骤,可以在 Windows 系统下成功安装和配置 Nginx、PHP 和 MySQL,...
- **日志记录**: 开启并监控错误日志,及时发现潜在的安全威胁。 **4. PHP 安全配置**: - **禁用危险函数**: 在 `php.ini` 文件中禁用如 `eval()`、`exec()` 等危险函数。 - **限制上传文件类型**: 控制允许上传的...
【知识点详解】 本文主要介绍如何在CentOS 5.8环境下搭建syslog...通过以上步骤,你将在CentOS系统上成功搭建了一个集syslog-ng日志收集、MySQL日志存储以及phpMyAdmin日志管理的环境,便于进行系统日志的监控和分析。
根据提供的文档内容,我们可以梳理出一个较为详细的关于“RHEL5+Postfix+Webmail+Dovecot+MySQL+PostfixAdmin”的知识点介绍。 ### 一、环境搭建基础 #### 1. RHEL5(Red Hat Enterprise Linux 5) - **版本**:...
MySQL事件调度器(Event Scheduler)是自MySQL 5.1.6版本引入的一个功能,它允许数据库管理员在MySQL内部创建和管理定时任务,而无需依赖操作系统级别的计划任务服务。这一特性大大提高了灵活性,尤其是在那些需要...
在MySQL 5.1.6版本之后,引入了事件调度器(Event Scheduler),使得用户无需依赖操作系统级别的cron job或其他外部工具,就能在数据库内部实现定时任务。 一、查看事件调度器状态 要检查MySQL事件调度器是否已经...
- 提到的数据库驱动jar包集合中还包括了SQL Server 2000/2005的驱动(如msbase.jar, mssqlserver.jar, msutil.jar, sqljdbc.jar)以及MySQL的驱动(如mysql-connector-java-5.1.6-bin.jar)。这些驱动是对应数据库...