【问题标题】:SQL - Query PerformanceSQL - 查询性能
【发布时间】:2015-07-25 12:30:50
【问题描述】:

如何查找mysql数据库中的低效查询?我想对查询进行性能调整,但找不到查询的位置?请建议我在哪里可以找到我的表的 mysql 查询。

谢谢

Prabhakaran.R

【问题讨论】:

  • 它们在 mysql 存储过程/函数/事件/触发器中,或者很可能是从您的源代码传递过来的。编程语言。 php。你在用什么?
  • 发布任何特别慢的模式,我们可以试一试:>
  • @DrewPierce 找出哪个运行慢.. 我需要进入日志,启用慢查询日志:设置全局慢_query_log ='ON',设置全局 long_query_time = 1;但我无法通过/var/lib/mysql 查看我的日志.. 它说权限被拒绝。怎么办??
  • 跟能sudo的人谈谈?

标签: mysql query-performance


【解决方案1】:

您可以启用general logslow query 日志。

启用通用查询日志将记录所有查询,如果您有很多读/写操作,可能会很繁重。在慢查询日志中,您可以提及一个阈值,并且只会记录时间超过某个时间的查询。发布后,您可以手动分析它,也可以使用提供的工具(Percona 有很好的工具)

【讨论】:

  • 开启慢查询日志:set global slow _query_log ='ON' ,set global long_query_time = 1 ;但我无法通过/var/lib/mysql 查看我的日志.. 它说权限被拒绝。怎么办??
【解决方案2】:

您是否使用explain plans 分析过您的查询?您可能能够找到一个查询,该查询将返回您希望的结果集,这不会对查询引擎造成太大的负担。请记住只选择您实际需要的列(尽量避免 SELECT *)、精心计划的索引并使用内部/外部连接来支持大量 WHERE 子句过滤器。

祝你好运。

RP

【讨论】:

  • 我想知道 - 我怎样才能找到处理速度慢的查询?它在哪里?
  • 开启慢查询日志:set global slow _query_log ='ON' ,set global long_query_time = 1 ;但我无法通过/var/lib/mysql 查看我的日志.. 它说权限被拒绝。怎么办??
【解决方案3】:

除了其他人所说的,使用pt-query-digest(来自percona.com)来总结slowlog。这会告诉你最糟糕的查询。

性能调优通常涉及知道要在表上放置哪些索引。 My index cookbook 是一个学习如何为给定的SELECT 构建INDEX 的地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 2021-11-21
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多