有没有办法测量 SQL 查询执行所需的时间而不用 Java 获取结果?

Posted

技术标签:

【中文标题】有没有办法测量 SQL 查询执行所需的时间而不用 Java 获取结果?【英文标题】:Is there a way to measure time taken for SQL query to execute without fetching the results in Java? 【发布时间】:2019-09-18 11:16:33 【问题描述】:

所以我正在编写一个数据库性能测试工具,它必须测量执行某些查询所需的时间,但它适用于大数据,这些查询每个都会生成数百万行,因此会在我的机器和服务器之间产生巨大的网络流量数据库主机。我的问题是如何从我知道查询何时完成执行但不获取结果集的 java 应用程序运行查询?

以下代码段是否排除了通过网络传输的所有行?

        //start recording time
     Bool someName = statement.execute(sqlStatement);
        //stop recording time

【问题讨论】:

如果可以修改它们,您可以只执行 SELECT COUNT(*) 而不是在查询中返回行? 我建议用你的 SQL 查询创建一个存储过程而不返回行,所以你只需要在你的 java 代码中执行 SP。 很遗憾我无法修改已经存在的查询 我的措辞不好,我当然是想复制并修改副本,除非您需要完全按原样测量它们。 在 Postgres 中,您可以使用explain (analyze) - 您使用的是哪个 DBMS 产品?但最后你应该测试这个,包括网络流量,因为你通常不会在生产环境中运行不检索结果的语句。 【参考方案1】:

您可以运行CREATE TABLE (SELECT query) 命令并测量时间。之后放下桌子。

mysqlreference

【讨论】:

以上是关于有没有办法测量 SQL 查询执行所需的时间而不用 Java 获取结果?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在运行时测量 sqlite 中的查询时间?

SQL SERVER相当于一个HashMap?

如何计算呈现 Django 管理页面所需的 SQL 查询数?

如果所需的列值重复 [重复],则 SQL 查询以获取顶部记录

有没有办法以所需的格式加入这两个表?

如何估计 MySQL 查询所需的临时磁盘空间?