如何在查询中获取MySQL状态

sym*_*ean 5 mysql database

是否可以在MySQL查询中使用服务器状态变量?

我可以从"显示状态"看到各种指标,但我如何计算派生值(例如查询缓存命中率)

show global status like 'Qcache_inserts';
show global status like 'Qcache_not_cached';
show global status like 'Qcache_hits';
Run Code Online (Sandbox Code Playgroud)

我能得到Qcache_hits /(Qcache_hits + Qcache_inserts + Qcache_not_cached)吗?

jue*_*n d 5

通常你可以访问该信息,因为这个选择:

SELECT
   VARIABLE_NAME,
   VARIABLE_VALUE
 FROM
   INFORMATION_SCHEMA.GLOBAL_STATUS
Run Code Online (Sandbox Code Playgroud)

您可以像这样进行所需的计算:

select (g1.VARIABLE_VALUE / (g1.VARIABLE_VALUE + g2.VARIABLE_VALUE + g3.VARIABLE_VALUE)) as result
FROM INFORMATION_SCHEMA.GLOBAL_STATUS g1
inner join INFORMATION_SCHEMA.GLOBAL_STATUS g2
inner join INFORMATION_SCHEMA.GLOBAL_STATUS g3
where g1.VARIABLE_NAME = 'Qcache_hits'
and g2.VARIABLE_NAME = 'Qcache_inserts'
and g3.VARIABLE_NAME = 'Qcache_not_cached'
Run Code Online (Sandbox Code Playgroud)