网站建设知识
msyql TPS v1:计算指定时间内
2025-07-22 09:53  点击:0

需求:计算每天业务高峰期9:00-18:00的TPS.

思路:1.每天早上9点定时记录下TPS相关的历史值 2.任意当前时间获取TPS相关的值减去早上9点记录的值 3.获取早上9点到当前时间的秒数

1.定时job

**********************

#!/bin/bash#ocpyang@126export black='\033[0m'export boldblack='\033[1;0m'export red='\033[31m'export boldred='\033[1;31m'export green='\033[32m'export boldgreen='\033[1;32m'export yellow='\033[33m'export boldyellow='\033[1;33m'export blue='\033[34m'export boldblue='\033[1;34m'export magenta='\033[35m'export boldmagenta='\033[1;35m'export cyan='\033[36m'export boldcyan='\033[1;36m'export white='\033[37m'export boldwhite='\033[1;37m'cecho ()## -- Function to easliy print colored text -- ### Color-echo.# 参数 $1 = message# 参数 $2 = color{local default_msg="No message passed."message=${1:-$default_msg} # 如果$1没有输入则为默认值default_msg.color=${2:-black} # 如果$1没有输入则为默认值black.case $color inblack)printf "$black" ;;boldblack)printf "$boldblack" ;;red)printf "$red" ;;boldred)printf "$boldred" ;;green)printf "$green" ;;boldgreen)printf "$boldgreen" ;;yellow)printf "$yellow" ;;boldyellow)printf "$boldyellow" ;;blue)printf "$blue" ;;boldblue)printf "$boldblue" ;;magenta)printf "$magenta" ;;boldmagenta)printf "$boldmagenta" ;;cyan)printf "$cyan" ;;boldcyan)printf "$boldcyan" ;;white)printf "$white" ;;boldwhite)printf "$boldwhite" ;;esacprintf "%s\n" "$message"tput sgr0 # tput sgr0即恢复默认值printf "$black"return}cechon ()# Color-echo.# 参数1 $1 = message# 参数2 $2 = color{local default_msg="No message passed."# Doesn't really need to be a local variable.message=${1:-$default_msg} # 如果$1没有输入则为默认值default_msg.color=${2:-black} # 如果$1没有输入则为默认值black.case $color inblack)printf "$black" ;;boldblack)printf "$boldblack" ;;red)printf "$red" ;;boldred)printf "$boldred" ;;green)printf "$green" ;;boldgreen)printf "$boldgreen" ;;yellow)printf "$yellow" ;;boldyellow)printf "$boldyellow" ;;blue)printf "$blue" ;;boldblue)printf "$boldblue" ;;magenta)printf "$magenta" ;;boldmagenta)printf "$boldmagenta" ;;cyan)printf "$cyan" ;;boldcyan)printf "$boldcyan" ;;white)printf "$white" ;;boldwhite)printf "$boldwhite" ;;esacprintf "%s" "$message"tput sgr0 # tput sgr0即恢复默认值printf "$black"return}#set mysql evnMYSQL_USER=root #mysql的用户名MYSQL_PASS='123' #mysql的登录用户密码MYSQL_HOST=localhost#每天9点生成TPS历史值和时间值last_exec_time="/root/tps_lastime.`date +%Y%m%d`.txt"t01=`date "+%Y-%m-%d %H:%M:%S" >${last_exec_time}`tps_everydat_9="tps_everydat_9.`date +%Y%m%d`.txt"#TPS(每秒事务量)tps_01="show global status where Variable_name in('Com_insert'); "tps_02="show global status where Variable_name in('Com_update'); "tps_03="show global status where Variable_name in('Com_delete'); "tps_re01="tpsre01.`date +%Y%m%d%H%M%S`.txt"tps_re02="tpsre02.`date +%Y%m%d%H%M%S`.txt"tps_re03="tpsre03.`date +%Y%m%d%H%M%S`.txt"mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${tps_01}" |grep -v Variable_name \|cut -f 2 >${tps_re01}mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${tps_02}" |grep -v Variable_name \|cut -f 2 >${tps_re02}mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${tps_03}" |grep -v Variable_name \|cut -f 2 >${tps_re03}tps_01_re=`cat ${tps_re01}`tps_02_re=`cat ${tps_re02}`tps_03_re=`cat ${tps_re03}`tps_everydat_9="/root/tps_everydat_9.`date +%Y%m%d`.txt"tps_sum_now=`awk 'BEGIN{print '${tps_01_re}' + '${tps_02_re}' + '${tps_03_re}'}' >${tps_everydat_9}` #shell默认不支持浮点运算rm -rf ${tps_re01}rm -rf ${tps_re02}rm -rf ${tps_re03}


2.脚本

**********************

#!/bin/bash#ocpyang@126export black='\033[0m'export boldblack='\033[1;0m'export red='\033[31m'export boldred='\033[1;31m'export green='\033[32m'export boldgreen='\033[1;32m'export yellow='\033[33m'export boldyellow='\033[1;33m'export blue='\033[34m'export boldblue='\033[1;34m'export magenta='\033[35m'export boldmagenta='\033[1;35m'export cyan='\033[36m'export boldcyan='\033[1;36m'export white='\033[37m'export boldwhite='\033[1;37m'cecho ()## -- Function to easliy print colored text -- ### Color-echo.# 参数 $1 = message# 参数 $2 = color{local default_msg="No message passed."message=${1:-$default_msg} # 如果$1没有输入则为默认值default_msg.color=${2:-black} # 如果$1没有输入则为默认值black.case $color inblack)printf "$black" ;;boldblack)printf "$boldblack" ;;red)printf "$red" ;;boldred)printf "$boldred" ;;green)printf "$green" ;;boldgreen)printf "$boldgreen" ;;yellow)printf "$yellow" ;;boldyellow)printf "$boldyellow" ;;blue)printf "$blue" ;;boldblue)printf "$boldblue" ;;magenta)printf "$magenta" ;;boldmagenta)printf "$boldmagenta" ;;cyan)printf "$cyan" ;;boldcyan)printf "$boldcyan" ;;white)printf "$white" ;;boldwhite)printf "$boldwhite" ;;esacprintf "%s\n" "$message"tput sgr0 # tput sgr0即恢复默认值printf "$black"return}cechon ()# Color-echo.# 参数1 $1 = message# 参数2 $2 = color{local default_msg="No message passed."# Doesn't really need to be a local variable.message=${1:-$default_msg} # 如果$1没有输入则为默认值default_msg.color=${2:-black} # 如果$1没有输入则为默认值black.case $color inblack)printf "$black" ;;boldblack)printf "$boldblack" ;;red)printf "$red" ;;boldred)printf "$boldred" ;;green)printf "$green" ;;boldgreen)printf "$boldgreen" ;;yellow)printf "$yellow" ;;boldyellow)printf "$boldyellow" ;;blue)printf "$blue" ;;boldblue)printf "$boldblue" ;;magenta)printf "$magenta" ;;boldmagenta)printf "$boldmagenta" ;;cyan)printf "$cyan" ;;boldcyan)printf "$boldcyan" ;;white)printf "$white" ;;boldwhite)printf "$boldwhite" ;;esacprintf "%s" "$message"tput sgr0 # tput sgr0即恢复默认值printf "$black"return}#set mysql evnMYSQL_USER=root #mysql的用户名MYSQL_PASS='123' #mysql的登录用户密码MYSQL_HOST=localhosttps_051="show global status where Variable_name in('Com_insert'); "tps_052="show global status where Variable_name in('Com_update'); "tps_053="show global status where Variable_name in('Com_delete'); "tps_re051="tpsre051.`date +%Y%m%d%H%M%S`.txt"tps_re052="tpsre052.`date +%Y%m%d%H%M%S`.txt"tps_re053="tpsre053.`date +%Y%m%d%H%M%S`.txt"mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${tps_051}" |grep -v Variable_name \|cut -f 2 >${tps_re051}mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${tps_052}" |grep -v Variable_name \|cut -f 2 >${tps_re052}mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${tps_053}" |grep -v Variable_name \|cut -f 2 >${tps_re053}tps_051_re=`cat ${tps_re051}`tps_052_re=`cat ${tps_re052}`tps_053_re=`cat ${tps_re053}`tps_sum_new=`awk 'BEGIN{print '${tps_051_re}' + '${tps_052_re}' + '${tps_053_re}' }'`#获取上一次的值(见TPS-JOB)tps_everydat_9="/root/tps_everydat_9.`date +%Y%m%d`.txt"tps_sum_old=`cat ${tps_everydat_9}`tps_sum_diff=`awk 'BEGIN{print '${tps_sum_new}' - '${tps_sum_old}' }' `#获取时间差last_exec_time="/root/tps_lastime.`date +%Y%m%d`.txt"t02=`cat ${last_exec_time}`start_time=`date +%s -d "$t02"`end_time=`date +%s `#echo $(($end_time-$start_time))tps_uptime_gf=`awk 'BEGIN{ print '$end_time'-'$start_time'}'`#计算早上9点到现在的TPStps_avg=`awk 'BEGIN{print '${tps_sum_diff}' / '${tps_uptime_gf}'}'|awk '{printf("%.f\n",$1)}'` #shell默认不支持浮点运算cechon "From $t02 to now ,TPS: ${tps_avg} " redecho " "tps_01_re=`cat ${tps_re051}`tps_02_re=`cat ${tps_re052}`tps_03_re=`cat ${tps_re053}`echorm -rf ${tps_re051}rm -rf ${tps_re052}rm -rf ${tps_re053}