系统表查询慢

【 TiDB 版本】 v7.1.1
【 Bug 的影响】 查询很多系统表都很慢,慢查询列表中全是系统表查询语句,掩盖了真正需要关注的慢查询,看执行计划中都是内存扫描,让人无法理解。

【可能的问题复现步骤】

有类似困扰的,盖个楼

补个文字版的执行计划
···
explain SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = UPPER(‘xxxx’) AND TABLE_NAME = UPPER(‘TB_xxxx’);
±---------------------±---------±-----±--------------±-------------------------------------------------------------+
| id | estRows | task | access object | operator info |
±---------------------±---------±-----±--------------±-------------------------------------------------------------+
| Projection_4 | 10000.00 | root | | Column#4, Column#8, Column#9, Column#11, Column#12, Column#7 |
| └─MemTableScan_5 | 10000.00 | root | table:COLUMNS | table_schema:[“xxxx”], table_name:["tb_xxxx] |
±---------------------±---------±-----±--------------±-------------------------------------------------------------+
2 rows in set (0.00 sec)
···

1 个赞

执行计划可以贴一下

这个确实是普遍性问题。。。。因为系统表不是真正物理意义上的表,就是内存表,所以都是内存扫描,但是如果集群规模很大表特别多的话,查询确实会慢

1 个赞

这个对业务应该没有影响吧

执行计划贴出来

TiDB 查系统其实没做过专属优化。

大家可以枚举经常查系统表的 SQL。我们可以拉着 PM 也看下。
根据场景优化相对容易落地。

1 个赞

一直都很慢… 可以吐槽

1 个赞

扩大内存

这个 SQL upper 去掉的话,能快点么?

1 个赞

系统表会不会没索引

是否可以提供更详细的执行计划截图?

1 个赞

只要不对表中的字段做转换就不影响


自测的火焰图,权限校验开销比较大,待优化

1 个赞

在我的测试场景下区别不大

官方在8.0版本对系统表的查询性能左右优化,静待新版