gpt4 book ai didi

mysql - SQL查询的性能指标计算

转载 作者:行者123 更新时间:2023-11-29 22:10:48 25 4
gpt4 key购买 nike

我在 MySQL 服务器上有两个数据库 A 和 B。

A是原始数据库,B是从A更改一些表的格式而派生的。因此,对于数据库 A 中的每个 table_A,数据库 B 中都有一个相应的表 table_B,对于 table_A 中的每一行,table_B 中都有相应的行,以不同的格式表示完全相同的表条目。

我很确定解释 A 和 B 之间的这种“格式差异”与我要问的问题无关。

我实际上使用JavaJDBC来与MySQL服务器交互。

我有许多针对数据库 A 的“SELECT”查询和针对数据库 B 的等效查询。我想重复执行它们并计算一些指标,如下所示:

execute SELECT query on db A and calculate metrics;
execute equivalent SELECT query on db B and calculate metrics;
UPDATE data stored in db A and db B by a percentage
loop

最终目标是比较两个孪生数据库上“相同”查询的性能,看看“格式差异”对查询性能有何影响。

我的问题:

  • 如何计算查询执行的 CPU 时间?目前我所做的是:

    long startTime = System.currentTimeMillis();
    结果集 rs = stmt.executeQuery(QUERY);
    长时间 = System.currentTimeMillis() - startTime;

    这准确吗?

  • 如何计算其他指标,例如内存使用情况、缓存使用情况、磁盘读取、磁盘写入、缓冲区获取

  • 有人可以建议任何其他指标来比较两个数据库上“相同”查询的性能吗?

最佳答案

有很多指标您无法获取。但这是我喜欢的一套:

FLUSH STATUS;
SELECT ...; -- or whatever query
SHOW SESSION STATUS LIKE 'Handler%';

最后一个命令可能会给出类似的内容

mysql> SHOW SESSION STATUS LIKE 'Handler%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| Handler_commit | 1 |
| Handler_delete | 0 |
| Handler_discover | 0 |
| Handler_external_lock | 2 |
| Handler_mrr_init | 0 |
| Handler_prepare | 0 |
| Handler_read_first | 1 |
| Handler_read_key | 1 |
| Handler_read_last | 0 |
| Handler_read_next | 5484 | -- rows in the table; so it did a table scan
| Handler_read_prev | 0 |
| Handler_read_rnd | 7 |
| Handler_read_rnd_next | 14 |
| Handler_rollback | 0 |
| Handler_savepoint | 0 |
| Handler_savepoint_rollback | 0 |
| Handler_update | 0 |
| Handler_write | 13 | -- wrote to a tmp table 13 rows after a GROUP BY
+----------------------------+-------+
18 rows in set (0.00 sec)

缓存来来去去,因此时间甚至可以变化 10 倍。另一方面,处理程序非常一致。它们让我深入了解正在发生的事情。

如果您通过 JDBC 运行,请像运行非 SELECT 一样运行 FLUSH;像运行 SELECT 一样运行 SHOW,为您提供 2 列。

关于mysql - SQL查询的性能指标计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31706208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com