使用系统变量 tidb_last_query_info 查询RU问题

官方文档中描述:

使用系统变量 tidb_last_query_info 查询执行上一条 SQL 语句的 RU 消耗

TiDB 提供系统变量 tidb_last_query_info,记录上一条 DML 语句执行的信息,其中包含 SQL 执行消耗的 RU。

我的问题是:
这个变量查询得出的RU,仅限于DML语句吗?还是也能够查看DQL语句消耗的RU?谢谢

可以的,毕竟都叫query_info了。
另外你发这个帖子等回复的时间,可能自己试一下会更快。
没环境,可以搞个tidb serverless的集群自己试试,免费的。

https://docs.pingcap.com/zh/tidb/stable/dev-guide-build-cluster-in-cloud#使用-tidb-serverless-构建-tidb-集群

1 个赞

我自己试过了,发帖确认一下。谢谢~

1 个赞

有时间学习下,升级下。测试下8.1版本的。比较好奇新功能

tidb_last_query_info 是 TiDB 中用于存储上一条查询语句执行信息的系统变量。它通常用来查看上一次执行的 SQL 语句的各种信息,包括消耗的资源等。
这个变量记录的信息确实主要针对 DML(Data Manipulation Language)语句,如 INSERTUPDATEDELETE 等操作。这些操作通常涉及到对数据的修改,因此会消耗资源单元(Resource Unit,简称 RU)。
然而,对于 DQL(Data Query Language)语句,如 SELECTSHOW 等查询操作,tidb_last_query_info 可能不会记录详细的 RU 消耗信息。因为 DQL 语句通常不涉及数据的修改,所以它们不直接消耗 RU。但是,一些复杂的查询,特别是那些涉及到大量计算或资源消耗的操作(如排序、聚合等),可能会被记录在 tidb_last_query_info 中。
要查看 tidb_last_query_info 中记录的信息,可以在 TiDB 的 SQL 命令行界面中执行以下查询:
SELECT * FROM information_schema.tidb_last_query_info;
tidb_last_query_info 中的信息只在查询执行后的一段时间内有效,具体时间由系统变量 tidb_query_info_expire_seconds 控制。默认情况下,这个时间可能是几分钟,但你可以根据需要调整它。
如果想了解特定 SQL 语句的 RU 消耗,最好的方法是查看该语句的执行计划,并分析计划中各个操作的资源消耗。可以通过 TiDB 的 EXPLAIN 语句来实现。