官方文档中描述:
使用系统变量 tidb_last_query_info
查询执行上一条 SQL 语句的 RU 消耗
TiDB 提供系统变量 tidb_last_query_info
,记录上一条 DML 语句执行的信息,其中包含 SQL 执行消耗的 RU。
我的问题是:
这个变量查询得出的RU,仅限于DML语句吗?还是也能够查看DQL语句消耗的RU?谢谢
官方文档中描述:
tidb_last_query_info
查询执行上一条 SQL 语句的 RU 消耗TiDB 提供系统变量 tidb_last_query_info
,记录上一条 DML 语句执行的信息,其中包含 SQL 执行消耗的 RU。
我的问题是:
这个变量查询得出的RU,仅限于DML语句吗?还是也能够查看DQL语句消耗的RU?谢谢
可以的,毕竟都叫query_info了。
另外你发这个帖子等回复的时间,可能自己试一下会更快。
没环境,可以搞个tidb serverless的集群自己试试,免费的。
我自己试过了,发帖确认一下。谢谢~
有时间学习下,升级下。测试下8.1版本的。比较好奇新功能
tidb_last_query_info
是 TiDB 中用于存储上一条查询语句执行信息的系统变量。它通常用来查看上一次执行的 SQL 语句的各种信息,包括消耗的资源等。
这个变量记录的信息确实主要针对 DML(Data Manipulation Language)语句,如 INSERT
、UPDATE
、DELETE
等操作。这些操作通常涉及到对数据的修改,因此会消耗资源单元(Resource Unit,简称 RU)。
然而,对于 DQL(Data Query Language)语句,如 SELECT
、SHOW
等查询操作,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
语句来实现。