广告
返回顶部
首页 > 资讯 > 数据库 >mysql查询日志计数统计
  • 771
分享到

mysql查询日志计数统计

2024-04-02 19:04:59 771人浏览 八月长安
摘要

分析统计Mysql general日志 找出查询次数最多的sql当我们需要优化mysql查询时,第一想到的是开启慢日志,慢日志可以看到执行消耗超过一定时间的SQL语句和未使用索引的SQL。但如果我们想分析所

分析统计Mysql general日志 找出查询次数最多的sql


当我们需要优化mysql查询时,第一想到的是开启慢日志,慢日志可以看到执行消耗超过一定时间的SQL语句和未使用索引的SQL。但如果我们想分析所有SQL查询的分布,即哪类SQL查询次数最多的时候,我们可以开启general log来统计。

开启general log

mysql> show  variables like '%general%';

+——————+————————————-+
| Variable_name | Value |
+——————+————————————-+
| general_log | OFF |
| general_log_file | /usr/local/mysql/data/localhost.log |
+——————+————————————-+

mysql> set global general_log = "ON";

analysis-general-log.py脚本

#!/usr/bin/python
 
# sort and count mysql general log
# Author: Jason
# Url: www.Centos.bz
# Email: admin#centos.bz
# Created: UTC 2015-02-15 17:51:53
 
import re
import sys
import os
 
if len(sys.argv) == 2:
    logPath = sys.argv[1]
    if not os.path.exists(logPath):
        print ("file " + logPath + " does not exists.")
        sys.exit(1)
else:
    print ("Usage: " + sys.argv[0] + " logPath")
    sys.exit(1)
 
logFo = open(logPath)
match = 0
 
for line in logFo:
    line = re.sub(r"\n","",line)
    if match == 0:
        # match line begin with numbers
        lineMatch = re.match(r"\s+[0-9]+\s+.*",line,flags=re.I)
        if lineMatch:
            lineTmp = lineMatch.group(0)
            match = match + 1
            continue
 
    elif match == 1:
        # match line begin with numbers
        lineMatch = re.match(r"\s+[0-9]+\s+.*",line,flags=re.I)
        if lineMatch:
            # match only query
            lineMatchQuery = re.match(r".*Query\s+(.*)",lineTmp,flags=re.I)
            if lineMatchQuery:
                lineTmp = lineMatchQuery.group(1)
                # remove extra space
                lineTmp = re.sub(r"\s+", " ",lineTmp)
                # replace values (value) to values (x)
                lineTmp = re.sub(r"values\s*\(.*?\)", "values (x)",lineTmp,flags=re.I)
                # replace filed = 'value' to filed = 'x'
                lineTmp = re.sub(r"(=|>|<|>=|<=)\s*('|\").*?\2","\\1 'x'",lineTmp)
                # replace filed = value to filed = x
                lineTmp = re.sub(r"(=|>|<|>=|<=)\s*[0-9]+","\\1 x",lineTmp)
                # replace like 'value' to like 'x'
                lineTmp = re.sub(r"like\s+('|\").*?\1","like 'x'",lineTmp,flags=re.I)
                # replace in (value) to in (x)
                lineTmp = re.sub(r"in\s+\(.*?\)","in (x)",lineTmp,flags=re.I)
                # replace limit x,y to limit
                lineTmp = re.sub(r"limit.*","limit",lineTmp,flags=re.I)
                
                print (lineTmp)
 
            match = 1
            lineTmp = lineMatch.group(0)
        else:    
            lineTmp += line
            match = 1
 
logFo.close()

使用方法:

analysis-general-log.py general.log | sort | uniq -c | sort -nr

Python脚本使用与python2.7以上环境

您可能感兴趣的文档:

--结束END--

本文标题: mysql查询日志计数统计

本文链接: https://www.lsjlt.com/news/43890.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql查询日志计数统计
    分析统计MySQL general日志 找出查询次数最多的SQL当我们需要优化MySQL查询时,第一想到的是开启慢日志,慢日志可以看到执行消耗超过一定时间的SQL语句和未使用索引的SQL。但如果我们想分析所...
    99+
    2022-10-18
  • MySQL 慢查询日志
    简介 MySQL 慢查询日志是排查问题 SQL 语句,以及检查当前 MySQL 性能的一个重要功能。 查看是否开启慢查询功能: mysql> mysql> show variables like 'slow_query%'; +...
    99+
    2022-04-20
    MySQL 慢查询日志
  • MySQL慢查询日志
    笔记内容:MySQL慢查询日志 笔记日期:2017-12-10 <br> MySQL日志文件系统的组成 通用查询日志 慢查询日志 和大多数关系型数据库一样,日志文件是MySQL数据库的重要...
    99+
    2022-10-18
  • MySQL 中的查询统计
    为执行的查询收集的重要统计信息,包括时间、临时表、索引、联接等,都收集在“查询统计 SQL 编辑器结果”选项卡中(请参阅以下两图)。 要求 启用查询,并收集性能架构统计信息。 performance_schema 已启用语句检测。 SQL ...
    99+
    2023-10-22
  • mysql如何查询并统计数量
    这篇文章主要介绍mysql如何查询并统计数量,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 在mysql中,可以使用SELECT语句查询数据,并利...
    99+
    2022-10-19
  • mysql慢查询日志轮转_MySQL慢查询日志实操
    目录一、概述二、慢查询日志设置1、临时设置2、查询慢查询日志的开启状态和慢查询日志储存的位置3、查看存放日志的形式4、永久开启慢日志三、慢查询测试四、慢查询分析工具五、mysql 清理slowlog方法六、小结一、概述 ...
    99+
    2022-09-12
  • Mysql的分组查询和统计计算
    1.聚合函数 聚合函数实现数据的统计计算,用于计算表中的数据,返回单个计算结果。聚合函数包括COUNT、SUM、AVG、MAX、MIN等函数,下面分别介绍。 (1)COUNT函数 COUNT函数用于计算组中满足条件的行数或总行数。 语法格式...
    99+
    2023-08-31
    sql 数据库
  • mysql 全局查询日志
    正式生产环境下不要开启 一.配置启用 永久: 在mysql的my.cnf中设置: [mysqld] #开启 general_log=1 #记录日志文件的路径 general_log_file=/path/logfile #...
    99+
    2018-03-10
    mysql 全局查询日志
  • mysql 根据date做年,月,日分组统计查询
    使用 YEAR(), MONTH(), DAY() 来获取年月日 SELECT YEAR(application_date) as years, count(1) FROM patent GROUP BY YEA...
    99+
    2015-08-27
    mysql 根据date做年,月,日分组统计查询
  • MYSQL_审计日志查看
    1.下载插件libaudit_plugin.so https://bintray.com/mcafee/mysql-audit-plugin/release/1.1.7-805#files 2. 安装插...
    99+
    2022-10-18
  • mysql数据库如何实现连续日期的统计查询
    我们经常会用到按日期汇总某些数据,一般我们使用group by + 统计函数来进行查询,得到的结果如下图所示: 在实际应用场景中,并不是每个时间段都有数据,所以我们汇总出来的结果中,日期是不连续的。...
    99+
    2023-09-03
    mysql
  • Thinkphp统计查询数量
    ThinkPHP是一个开源的PHP开发框架,可以用来快速开发web应用。在ThinkPHP中,可以使用模型类来查询数据库。如果要统计查询数量,可以使用count方法来统计符合条件的记录数。 示例代码: $count = M('tab...
    99+
    2023-09-01
    php 开发语言
  • 性能分析之MySQL慢查询日志分析(慢查询日志)
    一、背景            MySQL的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应的时间超过阈值的语句,具体指运行时间超过long_query_time(默认是10秒)值的SQL,会被记录到慢查询日志中。  ...
    99+
    2023-10-20
    mysql 数据库 慢日志分析 性能优化 慢查询日志
  • Mysql通用查询日志和慢查询日志的示例分析
    小编给大家分享一下Mysql通用查询日志和慢查询日志的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL中的日志包...
    99+
    2022-10-18
  • MySQL 慢查询日志工具
    mysqldumpslow 工具 MySQL安装目录下bin 文件 mysqldumpslow.pl文件 启动 perl mysqldumpslow.pl -s t -t 5 c:datadata-slow.log -s order(...
    99+
    2016-10-14
    MySQL 慢查询日志工具
  • 详解mysql慢日志查询
    慢日志查询作用 慢日志查询的主要功能就是,记录sql语句中超过设定的时间阈值的查询语句。例如,一条查询sql语句,我们设置的阈值为1s,当这条查询语句的执行时间超过了1s,则将被写入到慢查询配置的日志中. 慢查询主要...
    99+
    2022-05-19
    MySQL 慢日志查询 MySQL 查询
  • mysql查询日志的命令
    这篇文章主要介绍“mysql查询日志的命令”,在日常操作中,相信很多人在mysql查询日志的命令问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql查询日志的命令”的疑惑...
    99+
    2022-10-18
  • Mysql 开启慢日志查询及查看慢日志 sql
    本文为博主原创,转载请注明出处: 目录:    1.Mysql 开启慢日志配置的查询    2. 通过sql 设置Mysql 的慢日志开启    3. 通过慢 sql 日志文件查看慢 sql   1.Mysql 开启慢日志配置的查询 m...
    99+
    2017-01-10
    Mysql 开启慢日志查询及查看慢日志 sql
  • 如何统计MySQL查询时间
    本文主要给大家简单讲讲如何统计MySQL查询时间,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望如何统计MySQL查询时间这篇文章可以给大家带来一些实际帮助。...
    99+
    2022-10-18
  • mysql如何统计查询结果
    本篇内容介绍了“mysql如何统计查询结果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作