首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有索引的情况下找到执行的联接?

如何在没有索引的情况下找到执行的联接?
EN

Server Fault用户
提问于 2022-04-26 09:09:02
回答 2查看 1.9K关注 0票数 2

我在MariaDB10.6上运行了一个WordPress网站,最近我在Mysqltuner中看到一个没有索引的错误连接。

虽然数量不是很大,但Mysqltuner建议您继续增加Key_buffer_size。

然而,我的VPS没有太多的空闲内存,所以我用另一个问题来解决这个错误。

由于我有大约几十个插件活动,我想检查哪个令人敬畏的插件是造成问题。

因此,首先,我启用了错误日志如下所示。

代码语言:javascript
复制
log-queries-not-using-indexes = 1
log_error = /var/log/mysql/mysql-error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 3

经过一段时间后,我运行pt-查询摘要来分析错误日志。

代码语言:javascript
复制
pt-query-digest /var/log/mysql/mysql-slow.log

但我想不出其他的问题。

在缓慢日志中的许多查询中,如何确定哪个查询试图在没有索引的情况下与列连接?

我不知道数据库,所以我不能仅仅通过查看查询就找出它。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2022-05-07 01:39:21

若要查找仅执行没有索引的联接,

从MySQL命令提示符中确定当前值,以便在缓慢查询日志中只记录JPWI 1小时后恢复正常

代码语言:javascript
复制
SELECT @@long_query_time;
SELECT @@min_examined_row_limit;
      write down the above values
  
SET GLOBAL long_query_time=3600;  for a ONE MINUTE slow log trigger
SET GLOBAL min_examined_row_limit=1;   if the query reads one row, consider logging
SET GLOBAL log_queries_not_using_indexes=1;  to get the log you are needing

一小时后,

代码语言:javascript
复制
SET GLOBAL long_query_time=discovered above;
SET GLOBAL min_examined_row_limit=discovered above; 
SET GLOBAL log_queries_not_using_indexes=0;   # to turn OFF feature

FLUSH LOGS;

检查您的最后一个小时的慢速查询日志涉及到的查询没有索引。

查看联系人信息的个人资料,联系,如果你需要更多的建议,请。

大多数人不会在没有索引的情况下记录缓慢的查询和查询,以避免分离意大利面。得到一个或另一个,只为了保持某种形式的理智。

(固定格式,编辑需要6个字符)

票数 0
EN

Server Fault用户

发布于 2022-04-28 18:00:15

你有MyISAM表吗?如果没有(您的表应该是InnoDB),则将key_buffer_size降低到30米。

“没有索引的连接”并不一定是一个问题。如果您有缓慢的查询,这更重要。见SlowLog。也就是说,努力改进最慢的部分,不管它们是否是“没有索引的联接”。使用pt-query-digestmysqldumpslow -s t

要获得WordPress性能,请添加以下插件:WP指数改进

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1099477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档