我想测试下tiflash的性能,版本v5.3,目前有四台机器,每台16核,64G内存。具体拓扑如下图:
表里有3亿数据,目前开启配置参数如下:
set @@session.tidb_allow_mpp=1;
set @@session.tidb_isolation_read_engines = "tiflash";
set @@tidb_mem_quota_query = 20 << 30;
set @@tidb_distsql_scan_concurrency = 15;
set @@tidb_opt_distinct_agg_push_down = 1;
set @@tidb_opt_agg_push_down = 1;
set @@tidb_allow_batch_cop = 1;
【建表语句】
powercurve_guard:每一个月做一个分区,数据每10分钟一条。
CREATE TABLE IF NOT EXISTS doris.powercurve_guard
(
`wtid` INT NOT NULL,
`wfid` INT NOT NULL,
`windspeedarea` SMALLINT NOT NULL COMMENT '风速区间',
`dimday` DATE NOT NULL,
`dimmonth` DATE NOT NULL,
`dimyear` SMALLINT NOT NULL,
`starttime` DATETIME NOT NULL COMMENT '发生时间',
`windspeed` DECIMAL(4,2) NOT NULL COMMENT '风速',
`tbpower` DECIMAL(8,2) NOT NULL COMMENT '理论功率',
`guardpower` DECIMAL(8,2) NOT NULL COMMENT '担保功率',
`powergap` DECIMAL(8,2) NOT NULL COMMENT '担保功率-理论功率',
`localwindspeed` DECIMAL(4,2) NOT NULL COMMENT '本地风速',
`localpower` DECIMAL(6,2) NOT NULL COMMENT '本地理论功率',
`stdwindspeed` DECIMAL(4,2) NOT NULL COMMENT '标准风速',
`stdpower` DECIMAL(6,2) NOT NULL COMMENT '标准理论功率',
`powersum` DECIMAL(12,2) NOT NULL COMMENT '理论功率合计',
`guardpowersum` DECIMAL(12,2) NOT NULL COMMENT '担保功率合计',
`powercount` INT NOT NULL DEFAULT '1',
UNIQUE KEY (`wtid`, `starttime`)
)
PARTITION BY RANGE(to_days(starttime))
(
PARTITION p201712 VALUES LESS THAN (to_days('2018-01-01 00:00:00')),
PARTITION p201801 VALUES LESS THAN (to_days('2018-02-01 00:00:00')),
...
PARTITION p202112 VALUES LESS THAN (to_days('2022-01-01 00:00:00'))
);
【相关说明】
powercurve_guard 表 ,开启同步tiflash,并创建了1个副本。
【测试SQL】
2018-01-01 到 2018-02-05 大概1000万数据量,
2018-01-01 到 2019-01-01 大概一亿数据量
由于查询条件是一亿太慢,改为1000万测试
-- Q2.1 查询列
SELECT wtid, wfid, windspeedarea
FROM powercurve_guard
WHERE starttime >= '2018-01-01 00:00:00' and starttime <'2018-02-05 00:00:00'
ORDER BY wtid, wfid, windspeedarea;
-- Q5.2 2个AVG函数
SELECT wtid, wfid, windspeedarea , AVG(powergap) avg1, AVG(guardpower) avg2
FROM powercurve_guard
WHERE starttime >= '2018-01-01 00:00:00' and starttime <'2018-02-05 00:00:00'
GROUP BY wtid, wfid, windspeedarea
ORDER BY wtid, wfid, windspeedarea;
-- Q5.3 4个AVG函数
SELECT wtid, wfid, windspeedarea , AVG(powergap) avg1, AVG(guardpower) avg2, AVG(localpower) avg3, AVG(tbpower) avg4
FROM powercurve_guard
WHERE starttime >= '2018-01-01 00:00:00' and starttime <'2018-02-05 00:00:00'
GROUP BY wtid, wfid, windspeedarea
ORDER BY wtid, wfid, windspeedarea;
【执行计划】
见附件
Q2.1执行计划.html (2.9 KB)
Q5.2执行计划.html (7.1 KB)
Q5.3执行计划.html (6.8 KB)
【我的疑问】
-
Q2.1 查询多列,返回1000万数据,耗时很长,是否正常?
-
Q5.2 耗时2秒,但是Q5.3耗时22秒,差距很大,两条sql返回数据条数都是一致的
-
目前powercurve_guard表只有一个副本,是不是3个副本会更快点?
-
我这种部署方式tikv和tiflash在同一台服务器上,实际更多的是AP业务,而且tikv可以只部署一个实例吗?
-
tidb_distsql_scan_concurrency 并行多少合适呢?