注:原创作品,转载请注明出处
在我们的应用常有查询较慢的sql语句,开启慢查询日志记录功能,能把这些查询较慢的sql一览无余。
在my.ini配置文件中添加如下配置(这个功能mysql默认是没有开启的)
#开启记录慢查询日志,可以记录查询最慢的sql语句,long_query_time制定慢的时间,单#位为秒,log-queries-not-using-indexes是记录那些没有使用索引查询的sql语句。两个条件满足一个就会记录到慢查询日志中。
log-slow-queries = C:\Program Files\MySQL\MySQL Server 5.5\customLog\log_slow.txt
long-query-time = 1
log-queries-not-using-indexes
利用本人博客 mysql-性能调优1 中的例子,往表中插入一百万条数据,之后,执行查询语句,
mysql> select 10*count(*) from supan;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 1
Current database: test
+-------------+
| 10*count(*) |
+-------------+
| 9999990 |
+-------------+
1 row in set (2.31 sec)
可见用了2.31秒,这样慢查询日志文件中就有了这个乌龟sql。
如下:
C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld, Version: 5.5.27-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time Id Command Argument
C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld, Version: 5.5.27-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time Id Command Argument
# Time: 150117 16:39:34
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 1.255072 Lock_time: 0.211012 Rows_sent: 1 Rows_examined: 999999
use test;
SET timestamp=1421483974;
select 10*count(*) from supan;
之后测试log-queries-not-using-indexes指标:
之前是没有在supan表name中建立索引,所以把时间调到很大8,添加log-queries-not-using-indexes 重启mysql,执行查询:
mysql> select * from supan where name = '李四';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 1
Current database: test
Empty set (2.50 sec)
结果日志中存放了这个没有使用索引的记录。可以看一下日志:
C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld, Version: 5.5.27-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time Id Command Argument
# Time: 150117 17:11:10
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 1.435082 Lock_time: 0.121007 Rows_sent: 0 Rows_examined: 999999
use test;
SET timestamp=1421485870;
select * from supan where name = '李四';
我们在supan的name字段值添加索引:
CREATE INDEX index_supan_name ON supan (name);
在此执行查询:
mysql> select * from supan where name = '李四';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 1
Current database: test
Empty set, 2 warnings (1.29 sec)
结果日志中没有了这个sql,因为这次查询用到了索引,可以看一下日志:
C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld, Version: 5.5.27-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time Id Command Argument
呵呵呵。完毕
分享到:
相关推荐
确保 MySQL 进程正确操作就意味着它花费在服务查询上的时间要多于花费在处理后台任务(如处理临时磁盘表或打开和关闭文件)上的时间。 对查询进行优化 对查询进行优化是提高 MySQL 服务器性能的第三种方法。这意味...
除了以上提到的配置和分析慢查询日志的方法外,MySQL性能调优还可以通过以下方法实现: - 索引优化:合理建立和使用索引,提高查询效率。 - 查询语句优化:简化SQL语句,减少不必要的关联查询,避免使用SELECT *,...
MySQL性能调优参数 MySQL 是一个广泛使用的开源关系型数据库管理系统,在实际应用中,如何提高 MySQL 的性能是一个关键的问题。本文将总结 MySQL 性能调优参数,涵盖 Innodb 相关参数、连接参数、缓存参数、日志...
7. **日志与监控**:开启Mycat的日志记录,如SQL执行日志、慢查询日志,结合性能监控工具(如Prometheus、Grafana),可以及时发现并定位性能瓶颈。 8. **资源调度**:通过调整Mycat服务器的硬件资源,如CPU、内存...
### MySQL数据库性能调优 #### 引言 MySQL作为全球广泛使用的开源关系型数据库系统,在企业级应用和服务中扮演着重要角色。为了确保其高效稳定地运行,对MySQL进行性能调优至关重要。本文将深入探讨如何通过对...
- **开启慢查询日志**:记录执行时间过长的查询,以便分析其原因。 - **优化SQL语句**:使用更高效的查询方式,如减少子查询、利用索引等。 - **定期分析查询性能**:使用EXPLAIN分析SQL执行计划,检查是否存在可以...
- `slow_query_log=1`表示开启慢查询日志功能。 - `slow_query_log_file`指定了慢查询日志文件的保存位置。 - `long_query_time=10`定义了执行时间超过10秒(注意单位是秒而非毫秒)的查询才会被记录到慢查询日志...
- `slow_query_log`: 开启慢查询日志功能。 - `slow_query_log_file`: 指定慢查询日志文件的路径。 - `long_query_time`: 设置慢查询的时间阈值。 - `log_queries_not_using_indexes`: 记录未使用索引的查询。 ####...
《mysql管理之道:性能调优、高可用与监控》由资深mysql专家撰写,以最新的mysql版本为基础,以构建高性能mysql服务器为核心,从故障诊断、表设计、sql优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、...
1. **MySQL慢查询日志**:MySQL数据库允许管理员开启慢查询日志,记录那些执行时间过长的SQL语句,有助于性能调优。 2. **C++编程**: Slowquery使用C++编写,这是一种强大的编程语言,能够提供高性能和低级别的内存...
2. **性能调优**:根据实际工作负载调整my.ini配置文件,例如调整缓存大小、连接数等。 3. **备份与恢复**:定期备份数据,可以使用`mysqldump`命令,若发生故障,使用`mysqlimport`或`source`命令恢复。 4. **...
MySQL的慢查询日志是数据库管理员用来识别和优化性能瓶颈的重要工具。...总的来说,MySQL的慢查询日志功能是数据库监控和性能调优的关键部分,通过合理配置和使用分析工具,我们可以有效地发现并解决性能问题。
总结,线上MySQL的慢查询日志是性能调优的关键。通过开启慢查询日志,使用`pt-query-digest`进行分析,结合`EXPLAIN`查看执行计划,我们可以定位并优化性能瓶颈,从而提升线上服务的响应速度和整体性能。在日常运维...
- **开启慢查询日志**:通过设置`slow_query_log`为1来开启慢查询日志记录功能,并指定慢查询日志文件路径。 - **设置缓冲池大小**:`innodb_buffer_pool_size`表示InnoDB缓冲池的大小,可以根据系统可用内存进行...
- 开启慢查询日志的方法有两种:一种是在MySQL配置文件`my.cnf`或`my.ini`中添加相关参数;另一种是通过命令行动态设置。 配置示例: ```ini [mysqld] log-slow-queries = /data/mysqldata/slow-query.log ...
记住,虽然配置过程简单,但理解和掌握MySQL的管理、备份、恢复、性能调优等核心概念是至关重要的。MySQL的文档是学习这些知识的好资源,同时,社区论坛和在线教程也是获取帮助的好途径。在实际应用中,熟悉SQL语言...
1. 主库配置:在MySQL配置文件中设置`server-id`以区分各个实例,并开启`log-bin`记录二进制日志。 2. 创建复制用户:在主库上创建专门用于复制的账号,并授予`REPLICATION SLAVE`和`REPLICATION CLIENT`权限。 3. ...
MySQL的慢查询日志是数据库管理员用于识别...总之,MySQL慢查询日志是数据库性能调优的重要入口,通过分析并优化慢查询,可以有效地提升系统的整体性能。在日常运维中,定期检查和处理慢查询日志是一项必不可少的工作。