正如标题所说,我在哪里可以看到它?
是否有任何配置选项(例如多少毫秒可以确定查询是否缓慢)?
是否有一个需要 > 2 秒的简单查询,以便我可以测试慢查询记录器?
我正在寻找类似通用递归或迭代语句的东西。
我注意到,在 Mysql 中,当启用log_queries_not_using_indexes,slow_query_log和 时long_query_time,即使查询时间远小于long_query_time.
似乎一旦log_queries_not_using_indexes启用,无论“long_query_time”是什么,Mysql 都会记录所有不使用索引的查询。
有没有办法克服这个问题?我的意思是,有没有办法记录所有比 花费更长时间的查询long_query_time,而不管它们是否使用索引?
我正在尝试在我们的服务器上启用慢查询日志记录,以便识别任何可以使用优化的查询。听起来很简单,但是我的文件没有被写入。我没有收到任何错误或类似的信息,它似乎没有记录缓慢的查询。我记得在我的配置更改后重新启动 mysql。
我使用的是 MySQL Ver 5.1.61 。这是我在 my.cnf 中的内容:
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1
Run Code Online (Sandbox Code Playgroud)
文件 /var/logs/my.slow.log 有 mysql 作为所有者,也是为了调试,我对日志文件中的所有内容进行了读/写。
我在上面将 long_query_time 设置为 1,因为我只想看看它是否有效。我试过将它设置得更低(例如 0.3),但我仍然没有得到任何记录。我知道我的应用程序运行的查询需要超过 1 秒的时间,而且我还特意SELECT sleep(10);在终端中运行了日志查询 ( ) 以进行测试,但日志仍然是空的。
我已经浏览了文档,从我所看到的这应该是有效的。有人对我做错了什么有任何建议吗?任何建议将不胜感激,非常感谢!
编辑:如评论中所问,我运行了查询:
`SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`
Run Code Online (Sandbox Code Playgroud)
结果:
10.0000000
/var/run/mysqld/mysqld-slow.log
OFF
Run Code Online (Sandbox Code Playgroud)
显然我的配置更改没有被考虑在内,因为我相信这些是默认值。我很确定我正在修改的 my.cnf 文件正在被解析,就好像我输入了一个无效值,mysql 在重启时会出错。这里会发生什么?
另一个编辑:
在接受@RolandoMySQLDBA 的建议并将我的慢查询配置行移到[mysqld]我的设置下后,似乎正在节省。现在上述 variable_value 查询的结果是:
1.0000000
/var/logs/my.slow.log
ON
Run Code Online (Sandbox Code Playgroud)
但是我仍然没有看到文件 my.slow.log 被写入。我认为这不是权限问题,因为该文件归 mysql 所有,并且我已为该文件的所有用户添加了所有权限。谁能想到这行不通的原因?
编辑:解决了!慢查询日志的路径不正确,它应该是 /var/log/my.slow.log 而不是 /var/log* s */my.slow.log 。感谢大家的帮助,我学会了allot!
我想知道有没有其他方法可以在不记录慢查询的情况下检查我们的慢查询。假设,我有一个非常繁忙的服务器无法记录太多以节省内存和 I/O。那么,有没有其他方法可以检查我的查询速度是否慢?我知道,我们可以对查询进行分析,但仍然不确定究竟要做什么来确定哪个查询占用了大部分时间和内存。
刚开始 mysql 管理,不知道如何处理。任何指导将不胜感激。
我有items以下架构的表(在 postgres v9.3.5 中):
Column | Type | Modifiers | Storage
-----------+--------+----------------------------------------------------+----------
id | bigint | not null default nextval('items_id_seq'::regclass) | plain
data | text | not null | extended
object_id | bigint | not null | plain
Indexes:
"items_pkey" PRIMARY KEY, btree (id)
"items_object_id_idx" btree (object_id)
Has OIDs: no
Run Code Online (Sandbox Code Playgroud)
当我执行查询时,它会挂起很长时间:
SELECT * FROM "items" WHERE "object_id" = '123' ORDER BY "id" DESC LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
在 VACUUM ANALYZE 之后,查询执行改进了很多,但仍然不完美。
# EXPLAIN ANALYZE SELECT * FROM "items" WHERE "object_id" …Run Code Online (Sandbox Code Playgroud) mysql查询日志的格式是什么?特别是,对于像这样的行:
133 Query commit
133 Query rollback
Run Code Online (Sandbox Code Playgroud)
“133”代表什么?并且每一行都代表与数据库的往返通信(即它们不是批处理的)是真的吗?
此查询仅扫描一份文档并仅返回一份文档。但这非常慢:
2017-05-22T07:13:24.548+0000 I COMMAND [conn40] query databasename.collectionname query: { _id: ObjectId('576d4ce3f2d62a001e84a9b8') } planSummary: IDHACK ntoskip:0 keysExamined:1 docsExamined:1 idhack:1 cursorExhausted:1 keyUpdates:0 writeConflicts:0 numYields:0 nreturned:1 reslen:42 locks:{ Global: { acquireCount: { r: 2 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { r: 1 } } } 8009ms
2017-05-22T07:13:24.549+0000 I COMMAND [conn10] query databasename.collectionname query: { _id: ObjectId('576d4db35de5fa001ebdd77a') } planSummary: IDHACK ntoskip:0 keysExamined:1 docsExamined:1 idhack:1 cursorExhausted:1 keyUpdates:0 writeConflicts:0 numYields:0 nreturned:1 reslen:42 locks:{ Global: { acquireCount: { r: …Run Code Online (Sandbox Code Playgroud) 我正在记录我的系统的缓慢查询。现在我有几个查询需要优化并将全局slow_query_log变量重置为0. 现在我想删除慢查询日志文件mysqld-slow.log。谁能告诉我这样做的标准方法是什么?
我正在使用 Cent OS 并且不想删除或影响其他日志文件(即一般日志或二进制日志) 谢谢。
我们面临一个问题,在某些时候,提交的时间超过一秒钟。这样做的时间间隔是不固定的。我们的应用程序发送了数千次提交,但在某些情况下,具有完全相同时间戳的提交会变慢。
同时慢查询日志中没有任何其他查询。关于如何进一步调查的任何指示?
我们在 Amazon RDS 上使用 MySQL 5.7.16。
performance ×10
slow-log ×10
mysql ×8
amazon-rds ×1
explain ×1
mongodb ×1
mongodb-3.2 ×1
mysql-5.5 ×1
mysql-5.7 ×1
optimization ×1