首页 > 数据库 >使用Performance_schema监控SQL

使用Performance_schema监控SQL

时间:2024-10-10 19:01:40浏览次数:8  
标签:shell SQL sql Performance performance digest schema

背景:

在AWS Aurora上如果设置slow_query_time=0,抓取全量日志分析,会导致日志文件过大,限制CPU性能发挥。因此使用Performance_schema分析sql。
可根据需要的指标,在SQL语句上添加响应字段。

#!/bin/bash
source /etc/profile
shopt -s expand_aliases


## databases
dbs=`cat /data/dba/yanhao/shell/performance_schema_shell/dbs.list`
## addresses
address=`cat /data/dba/yanhao/shell/performance_schema_shell/address.list`
## sql摘要
digest=/data/dba/yanhao/shell/performance_schema_shell/digest.list
## 具体的SQL语句
aSQL=/data/dba/yanhao/shell/performance_schema_shell/sql.list

cat /dev/null > $digest
cat /dev/null > $aSQL

## 获取sql摘要
for db in $dbs
do  
#    echo "============"
    dbalogin $address  -e "use performance_schema;
        SELECT DIGEST_TEXT, COUNT_STAR as \"查询次数\",
            FIRST_SEEN, LAST_SEEN, time_to_sec(timediff(LAST_SEEN,FIRST_SEEN)) as time,
            (time_to_sec(timediff(LAST_SEEN,FIRST_SEEN)))/COUNT_STAR as \"tims_s\/call\"   
            FROM performance_schema.events_statements_summary_by_digest where SCHEMA_NAME = '$db' ORDER BY COUNT_STAR desc limit 10 \G"  2> /dev/null | tee -a  $digest
done


## 根据sql摘要获取详细sql语句
while IFS= read -r line;
do 
    sql=`echo "$line" | grep -i 'digest_text' | awk -F ": " '{print $2}' | sed 's/\*/\\\*/g'`
    if [[ ${#sql} != 0 ]]
    then

        dbalogin $address -e "use performance_schema;
            SELECT  SQL_TEXT  FROM events_statements_history WHERE DIGEST_TEXT =\"$sql\" limit 1;" 2> /dev/null >> $aSQL
    fi
done < $digest

## 查询某个sql的具体信息
while IFS= read -r line;
do
  sql=`echo "$line" | grep -iv 'sql_text' | sed 's/\*/\\\*/g'`
  if [[ ${#sql} != 0  ]]
  then

      dbalogin $address -e "use performance_schema;
            SELECT SQL_TEXT,
                ROWS_EXAMINED,
                ROWS_SENT,
                TIMER_START,
                TIMER_END,
                (TIMER_END-TIMER_START)/1000000000 as time_ms 
                FROM events_statements_history WHERE SQL_TEXT =\"$sql\" limit 1 \G" 2> /dev/null
  fi  
done < $aSQL

标签:shell,SQL,sql,Performance,performance,digest,schema
From: https://www.cnblogs.com/tyhA-nobody/p/18456931

相关文章

  • Solon 3.0 新特性:SqlUtils
    Solon3.0引入了新的SqlUtils用于数据库基础操作,SqlUtils是对JDBC较为原始的封装,采用了UtilsAPI的风格,极为反普归真。特性有:支持事务管理支持多数据源支持流式输出支持批量执行支持存储过程一、概述SqlUtils是一个轻量的数据库操作框架,采用UtilsAPI风格,简......
  • 利用VBA+SQL查询Excel工作表数据(基本查询)
    引言在VBA中,我们可以使用SQL语句对Excel工作表数据进行增删改查的操作。其中,查询工作表数据是最经常使用的操作。SQL查询语句可大致分为以下几类:(1)基本查询;(2)条件查询;(3)模糊查询;(4)分组查询;(5)多表查询。本文搭建了VBA+SQL查询的模板,并汇总了SQL基本查询的实际应用,为后续学习条件查......
  • MySQL下载、安装与配置
    下载MySQL1、进入MySQL官网2、点击Products,再点击MySQLCommunityServer3、选择MySQL版本,点击GotoDownloadPage4、点击Download下载MySQL安装程序5、点击Nothanks,juststartmydownload,等待下载安装MySQL1、双击运行下载的安装程序2、勾选Custom,点击N......
  • 金慧-综合管理信息系统 LoginBegin.aspx SQL注入复现
    0x01产品描述:        金慧-综合管理信息系统(以下简称“金慧综合管理系统”)是上海金慧软件有限公司基于多年行业系统研发和实施经验,为各类企业量身定制的一套综合性管理解决方案。该系统旨在通过信息化手段,提升企业的管理效率,优化资源配置,实现办公自动化和无纸化办公......
  • 锐明Crocus系统 RepairRecord.do SQL注入漏洞
    0x01产品描述:       明锐技术是一家专注于AI和视频技术的商用车智能物联(AIoT)解决方案提供商,Crocus系统是其核心产品之一。该系统旨在利用人工智能、高清视频、大数据和自动驾驶技术,提高企业或车队的运营效率,帮助商用车减少交通事故和货物丢失。通过车载摄像头、毫米波......
  • ThinkPHP5&bootstrap&MySQL开发学习平台(包括后台管理功能、PC端网页、移动端网页)手把
    一、项目预览(全部源码链接在最下面)功能及页面持续优化中......二、本地运行方式1、下载源码包进行解压(源码在最下面)2、下载phpstudy_pro,并运行Apache&......
  • MySQL之innodb_flush_log_at_trx_commit和sync_binlog
    innodb_flush_log_at_trx_commit和sync_binlog两个参数是控制MySQL磁盘写入策略以及数据安全性的关键参数,它们的配置对于mysql性能有很大的影响一、innodb_flush_log_at_trx_commitinnodb_flush_log_at_trx_commit:是InnoDB引擎特有的,ib_logfile的刷新方式(ib_logfile:存放In......
  • mysql数据库--行级锁,间隙锁和临键锁详解
    转载链接地址:MySQL数据库——锁-行级锁(行锁、间隙锁和临键锁)介绍行级锁,每次操作锁住对应的行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用在InnoDB存储引擎中。InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加的锁。对于行级......
  • flask sqlalchemy 分页(二)
    page.html<!--这个是分页展示下面的页码-->{%macromy_paginate(pagination,url)%}<nav><ulclass="pagination">{%ifpagination.has_prev%}<liclass="page-itemactive"><aclass="page-link&......
  • MySQL调优指南及高级SQL技巧
    知识背景:相信大家在面试的时候都会遇到关于mysql调优的问题,这已经是必问的一环节了,特此在这边简单记录一些关于mysql调优的知识点,希望对大家有帮助!总体介绍:MySQL调优主要分为三个步骤:监控报警、 排查慢SQL、MySQL调优。监控报警:使用工具(如Prometheus+Grafana)监控MySQL,发......