我使用此视图来关注每秒,分钟,小时和天的查询数量:
create or replace view _dba_query_stats as
select
SUBSTRING(VARIABLE_NAME, 5) as query_type,
VARIABLE_VALUE as total_count,
round(VARIABLE_VALUE / ( select VARIABLE_VALUE from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Uptime_since_flush_status'), 2) as per_second,
round(VARIABLE_VALUE / ((select VARIABLE_VALUE from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Uptime_since_flush_status') / (60))) as per_minute,
round(VARIABLE_VALUE / ((select VARIABLE_VALUE from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Uptime_since_flush_status') / (60*60))) as per_hour,
round(VARIABLE_VALUE / ((select VARIABLE_VALUE from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Uptime_since_flush_status') / (60*60*24))) as per_day,
FROM_UNIXTIME(round(UNIX_TIMESTAMP(sysdate()) - (select VARIABLE_VALUE from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Uptime_since_flush_status'))) report_period_start,
sysdate() as report_period_end,
TIME_FORMAT(SEC_TO_TIME((select VARIABLE_VALUE from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Uptime_since_flush_status')),'%Hh %im') as report_period_duration
from
information_schema.GLOBAL_STATUS
where
VARIABLE_NAME in ('Com_select', 'Com_delete', 'Com_update', 'Com_insert');
样本输出:
query_type total_count per_second per_minute per_hour per_day report_period_start report_period_end report_period_duration
DELETE 0 0 0 0 0 2017-04-16 03:46 2017-04-20 22:14:56 114h 28m
INSERT 36595 0.09 5 320 7672 2017-04-16 03:46 2017-04-20 22:14:56 114h 28m
SELECT 14842019 36.02 2161 129656 3111738 2017-04-16 03:46 2017-04-20 22:14:56 114h 28m
UPDATE 189137 0.46 28 1652 39654 2017-04-16 03:46 2017-04-20 22:14:56 114h 28m
Queries
全局状态变量计数这是一切,因为服务器上次启动...SHOW STATUS LIKE 'Uptime';
秒前。许多状态变量已被清除,FLUSH STATUS;
但Queries
至少在我刚刚确认的测试服务器中并未清除,它们是MySQL 5.5.19和5.6.14。