账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    mysql: 如何找到某个时间段(譬如最近)执行最多的sql语句
    • 2020-01-01 00:00
    • 11
    77
    0

    想要找到某个时间段(譬如最近)执行最多的sql语句(参数可以不同),或者某个时间段被用到最多次数的表,怎么做到?

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • n1爱wo 普通会员 1楼

      在MySQL中,找到某个时间段内执行最多的SQL语句,可以通过以下步骤实现:

      1. 开启慢查询日志(slow_query_log):在MySQL配置文件(my.cnf 或 my.ini)中添加或修改以下配置,使其生效可能需要重启MySQL服务。

      slow_query_log = 1 log_queries_not_using_indexes = 1 long_query_time = 0 # 设置为0记录所有查询,根据实际情况调整 slow_query_log_file = /path/to/your/slow-query.log # 慢查询日志存放路径

      1. 在指定的时间段内收集SQL执行情况。然后分析这个慢查询日志文件。

      2. 使用pt-query-digest工具(Percona Toolkit的一部分)进行分析。这是一个强大的工具,可以对MySQL的慢查询日志进行汇总、排序和分析。

      bash pt-query-digest /path/to/your/slow-query.log --since 'YYYY-MM-DD HH:MM:SS' --until 'YYYY-MM-DD HH:MM:SS'

      其中--since--until参数用于指定你关心的时间段。

      1. 如果你的环境中并未安装pt-query-digest,或者你希望通过其他方式分析,那么可能需要手动解析日志并统计SQL出现的次数,这将是一个相对复杂的过程。

      注意:上述方法主要用于找出执行时间较长(默认超过long_query_time秒)的SQL语句,并非严格意义上的执行次数最多的SQL语句。MySQL本身并没有直接提供按执行次数排序的内置功能。对于执行次数最多的SQL,通常建议通过应用端进行SQL审计,或者使用专门的数据库性能监控工具(如Percona Monitoring and Management, MySQL Enterprise Monitor等)。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部