进击的麦田麦
(进击的麦田麦)
2021 年5 月 14 日 07:42
1
【TiDB 版本】
v5.0
【问题描述】
如下sql,在tidb执行速度,明显慢于mariadb
SELECT
COLUMN_NAME
FROM
information_schema.COLUMNS
WHERE
table_name = ‘test’ and TABLE_SCHEMA =‘test’ AND DATA_TYPE in (‘date’,‘datetime’,‘time’)
在160W数据下,执行速度需要 6s。
相同SQL 在 mariadb 5.7.17,600W数据下,只需 0.5s 。
想知道tidb这块是有优化手段嘛?
若提问为性能优化、故障排查 类问题,请下载脚本 运行。终端输出的打印结果,请务必全选 并复制粘贴上传。
Lucien
( Lucien)
2021 年5 月 16 日 02:57
2
感谢反馈,这张表的查询还在持续优化中,建议提供一下该查询的 SQL 的执行计划。另外我什么场景下需要频繁查询该表操作 ?
进击的麦田麦
(进击的麦田麦)
2021 年5 月 16 日 08:55
3
感谢回复。
有个业务功能存在动态创建表的情况,求快想在information_schema获取字段信息。
SELECT
COLUMN_NAME
FROM
information_schema. COLUMNS
WHERE
table_name = ‘test’ and TABLE_SCHEMA =‘test’ AND DATA_TYPE in (‘date’,‘datetime’,‘time’)
该sql执行计划如下:
Projection_4 8000.00 root Column#4
└─Selection_5 8000.00 root eq(Column#2, “test”), eq(Column#3, “test”), in(Column#8, “date”, “datetime”, “time”)
└─MemTableScan_6 10000.00 root table:COLUMNS
yilong
(yi888long)
2021 年5 月 17 日 02:41
4
explain analyze sql 不是 explain ,麻烦反馈下结果,另外请执行多次,看看是否每次的时间都差不多,多谢。
yilong
(yi888long)
2021 年5 月 19 日 09:32
6
再一次查询呢? 在同一个session 连续查询两次的时间消耗一样吗?
yilong
(yi888long)
2021 年5 月 20 日 02:10
8
多谢,麻烦帮忙确认下具体哪个版本? v5.0.0 还是 v5.0.1? 下次麻烦写清楚
懂的都懂
(wangtianyi)
2021 年5 月 20 日 06:08
10
想问一下,这种查询 columns 表的次数频繁吗?
进击的麦田麦
(进击的麦田麦)
2021 年5 月 21 日 04:08
11
就业务功能来说还是比较频繁。不过查columns只是deadline下的快速实现方案。
了解,感谢反馈,这个问题的状态处于分析中,有进展的话,这边会跟帖回复~~
yilong
(yi888long)
2021 年6 月 2 日 07:44
15
curl -G http://{TiDBIP}:10080/debug/zip?seconds=30" > profile.zip
ip地址为tidb服务器的ip,端口为tidb_status_port的端口
麻烦帮忙取一下火焰图吧。 先查询,查询的过程中执行提取,多谢。可以多查询几次。
进击的麦田麦
(进击的麦田麦)
2021 年6 月 3 日 10:43
16
目前测试环境数据量下来了,平均查询时间在2s左右。
抱歉火焰图不会生成。
profile.zip (758.8 KB)
yilong
(yi888long)
2021 年6 月 7 日 13:32
17
TiDB 的 information_schema.columns 这张表是个虚拟表,当尝试去获取他的时候,tidb 才会去根据数据构造这张表。在数据量特别大的时候会出现比较慢的情况。
从火焰图来看,目前是符合这个情况的。
1 个赞
您好,想请问下,我之前在查询informationschema.tables时速度很慢,但执行show tables from dbname又特别快,想请问下,难道show tables不是去informationschema.tables查询表信息吗