mysql性能分析

来源:互联网 发布:安卓软件编程入门教程 编辑:程序博客网 时间:2024/06/05 03:49

1、set profiling = 1;

show PROFILES;

2、set @query_id = 1;

select state, sum(duration) as Total_R, ROUND(100*SUM(DURATION) / (select SUM(duration)
FROM information_schema.PROFILING 
where query_id = @query_id), 2) as Pct_R, COUNT(*) as Calls, sum(duration) / count(*) as "R/Call"
From information_schema.PROFILING where query_id = @query_id group by state order by Total_R desc;

3、SHOW STATUS 是一 个 有用 的 工具, 但 并不是 一 款 剖析 工具( 12)。 SHOW STATUS 的 大部分 结果 都 只是 一个 计数器, 可以 显示 某些 活动 如 读 索引 的 频繁 程度, 但 无法 给出 消耗 了 多少 时间。 SHOW STATUS 的 结果 中 只有 一条 指的 是 操作 的 时间( Innodb_ row_ lock_ time), 而且 只能 是 全 局级 的, 所以 还是 无法 测量 会话 级别 的 工作。


flush status;

select * from ad_config;

show status where variable_name like 'Handler%'  or variable_name like 'created%';


要 注意 SHOW STATUS 本身 也会 创建 一个 临时 表, 而且 也会 通过 句柄 操作 访问 此 临时 表, 这 会 影响 到 SHOW STATUS 结果 中 对应 的 数字, 而且 不同 的 版本 可能 行为 也 不尽相同。 比较 前面 通过 SHOW PROFILES 获得 的 查询 的 执行 计划 的 结果 来看, 至少 临时 表 的 计数器 多加 了 2。