Ast*_*tha 13 mysql performance slow-log
我想知道有没有其他方法可以在不记录慢查询的情况下检查我们的慢查询。假设,我有一个非常繁忙的服务器无法记录太多以节省内存和 I/O。那么,有没有其他方法可以检查我的查询速度是否慢?我知道,我们可以对查询进行分析,但仍然不确定究竟要做什么来确定哪个查询占用了大部分时间和内存。
刚开始 mysql 管理,不知道如何处理。任何指导将不胜感激。
如果你根本不想启用慢查询日志,我有一个建议
您可以在一段时间内使用pt-query-digest。
我在 DBA StackExchange 中建议了几次
Nov 24, 2011
: MySQL 一般查询日志性能影响Apr 24, 2012
:调查 MySQL 吞吐量的峰值Jul 26, 2012
:什么正在运行?如果您查看我的Nov 24, 2011
链接,我提供了一个 shell 脚本,您可以使用 crontab 来启动pt-query-digest。
例如,您可以在脚本中循环运行以下语句,该脚本每 10 秒触发一次语句。
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where time>10 and command<>"Sleep"'
您可以自定义它以根据您发出的查询为您提供更多或更少的信息。
mysql> desc INFORMATION_SCHEMA.PROCESSLIST;
+---------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------------+------+-----+---------+-------+
| ID | bigint(21) unsigned | NO | | 0 | |
| USER | varchar(16) | NO | | | |
| HOST | varchar(64) | NO | | | |
| DB | varchar(64) | YES | | NULL | |
| COMMAND | varchar(16) | NO | | | |
| TIME | int(7) | NO | | 0 | |
| STATE | varchar(64) | YES | | NULL | |
| INFO | longtext | YES | | NULL | |
| TIME_MS | bigint(21) | NO | | 0 | |
| ROWS_SENT | bigint(21) unsigned | NO | | 0 | |
| ROWS_EXAMINED | bigint(21) unsigned | NO | | 0 | |
+---------------+---------------------+------+-----+---------+-------+
11 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
为了不多次保存相同的查询,您可以使用查询的哈希作为唯一键。
归档时间: |
|
查看次数: |
36741 次 |
最近记录: |