TPCH测试TIDB

时间:2022-12-10 11:56:26

1、下载Git的测试工具

[root@localhost tpch]# git clone https://github.com/pingcap/tidb-bench.git
Cloning into 'tidb-bench'...
fatal: unable to access 'https://github.com/pingcap/tidb-bench.git/': Encountered end of file
###如上报错的解决
[root@localhost tpch]# git config --global --unset http.proxy
[root@localhost tpch]# git config --global --unset https.proxy
[root@localhost tpch]# git clone https://github.com/pingcap/tidb-bench.git
Cloning into 'tidb-bench'...
remote: Enumerating objects: 3313, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 3313 (delta 6), reused 16 (delta 6), pack-reused 3293
Receiving objects: 100% (3313/3313), 7.33 MiB | 2.65 MiB/s, done.
Resolving deltas: 100% (1321/1321), done.
[root@localhost tpch]#

2、tidb的库中创建8张表

进入下载到的tidb-bench中,再次进入到tpch

[root@localhost tpch]# mysql -h192.168.30.51 -uroot -P4000 <dss.sql

生成tiflash的副本

ALTER TABLE customer SET TIFLASH REPLICA 1;
ALTER TABLE lineitem SET TIFLASH REPLICA 1;
ALTER TABLE nation SET TIFLASH REPLICA 1;
ALTER TABLE orders SET TIFLASH REPLICA 1;
ALTER TABLE part SET TIFLASH REPLICA 1;
ALTER TABLE partsupp SET TIFLASH REPLICA 1;
ALTER TABLE region SET TIFLASH REPLICA 1;
ALTER TABLE supplier SET TIFLASH REPLICA 1;

3、生成测试数据

[root@localhost ~]# cd /tidb/tpch/tidb-bench/tpch   #进入到tpch脚本的目录

[root@localhost tpch]# yum install gcc #安装gcc

[root@localhost tpch]# make tbl #构建生成tbl的数据,此时默认是生成1G数据
cd dbgen; make;
make[1]: Entering directory `/tidb/tpch/tidb-bench/tpch/dbgen'
gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -c -o build.o build.c
........等等显示的结果

[root@localhost tpch]# cd dbgen/
[root@localhost dbgen]# ll *.tbl #此时默认生成的为1G的测试结果
-rw-r--r--. 1 root root 24346144 Dec 6 12:51 customer.tbl
-rw-r--r--. 1 root root 759863287 Dec 6 12:51 lineitem.tbl
-rw-r--r--. 1 root root 2224 Dec 6 12:51 nation.tbl
-rw-r--r--. 1 root root 171952161 Dec 6 12:51 orders.tbl
-rw-r--r--. 1 root root 118984616 Dec 6 12:51 partsupp.tbl
-rw-r--r--. 1 root root 24135125 Dec 6 12:51 part.tbl
-rw-r--r--. 1 root root 389 Dec 6 12:51 region.tbl
-rw-r--r--. 1 root root 1409184 Dec 6 12:51 supplier.tbl

删除1G的数据,重新生成10G的测试数据

[root@localhost dbgen]# rm -rf *.tbl
[root@localhost tpch]# cd dbgen && ./dbgen -s 10
TPC-H Population Generator (Version 2.17.0)
Copyright Transaction Processing Performance Council 1994 - 2010

此时生成完数据了,到dbgen目录下du -sh *.tbl查看生成的数据

4、导入数据

(1)首先进入到数据库内部,再次执行导入命令

[root@localhost ~]# mysql -h192.168.30.51 -uroot -p -P4000
MySQL [(none)]> use tpch;
#此时执行下面的语句
load data local INFILE '/tidb/tpch/tidb-bench/tpch/data/nation.tbl' INTO TABLE nation FIELDS TERMINATED BY '|';
load data local INFILE '/tidb/tpch/tidb-bench/tpch/data/region.tbl' INTO TABLE region FIELDS TERMINATED BY '|';
load data local INFILE '/tidb/tpch/tidb-bench/tpch/data/part.tbl' INTO TABLE part FIELDS TERMINATED BY '|';
load data local INFILE '/tidb/tpch/tidb-bench/tpch/data/supplier.tbl' INTO TABLE supplier FIELDS TERMINATED BY '|';
load data local INFILE '/tidb/tpch/tidb-bench/tpch/data/partsupp.tbl' INTO TABLE partsupp FIELDS TERMINATED BY '|';
load data local INFILE '/tidb/tpch/tidb-bench/tpch/data/customer.tbl' INTO TABLE customer FIELDS TERMINATED BY '|';
load data local INFILE '/tidb/tpch/tidb-bench/tpch/data/orders.tbl' INTO TABLE orders FIELDS TERMINATED BY '|';
load data local INFILE '/tidb/tpch/tidb-bench/tpch/data/lineitem.tbl' INTO TABLE lineitem FIELDS TERMINATED BY '|';

说明。再导入中出现报错如下ERROR 8004 (HY000): Transaction is too large, size: 104857637

MySQL [tpch]> load data local INFILE '/tidb/tpch/tidb-bench/tpch/data/part.tbl' INTO TABLE part FIELDS TERMINATED BY '|';
ERROR 8004 (HY000): Transaction is too large, size: 104857637

解决方法:首先建议调大 topo.yaml 文件中的 txn-total-size-limit 值。若还是不行,则将 ​​tidb_dml_batch_size​​ 的值设置为 20000 来恢复升级前的行为。

第一步:
#cd /tidb #创建tidb本地集群时创建的配置文件
第二步:
[root@localhost tidb]# vim topo.yaml
tikv_servers:下面增加 performance.txn-total-size-limit: 10737418240,请看此篇文章 https://www.zybuluo.com/llplmlyd/note/1737936 中的介绍使用
#######修改或的显示为
.........等等
tikv_servers:
- host: 192.168.30.51
port: 20160
status_port: 20180
config:
server.labels: { host: "logic-host-1" }
performance.txn-total-size-limit: 10737418240
- host: 192.168.30.51
port: 20161
status_port: 20181
config:
server.labels: { host: "logic-host-2" }
performance.txn-total-size-limit: 10737418240
- host: 192.168.30.51
port: 20162
status_port: 20182
config:
server.labels: { host: "logic-host-3" }
performance.txn-total-size-limit: 10737418240
tiflash_servers:
- host: 192.168.30.51
........等等

第三步:
$ tiup cluster reload tidb_v640 -R tidb #tidb_v640为cluster_name
第四步:
MySQL [tpch]> set @@tidb_dml_batch_size=20000;
Query OK, 0 rows affected (0.00 sec)

执行完如上,再次使用load data去导入大表的数据,则会显示导入成功

MySQL [tpch]> load data local INFILE '/tidb/tpch/tidb-bench/tpch/data/part.tbl' INTO TABLE part FIELDS TERMINATED BY '|';
Query OK, 2000000 rows affected (48.68 sec)
Records: 2000000 Deleted: 0 Skipped: 0 Warnings: 0

测试结果

注:创建表的SQL与查询的SQL请见下载后的工具包

[1]导入耗时

 


表名

行数

耗时

nation

25

0.24 sec

region

5

0.02 sec

part

2000000

48.68 sec

orders

15000000

8 min 14.55 sec

supplier

100000

48.10 sec

partsupp

8000000

5 min 18.83 sec

customer

1500000

1 min 19.35 sec

lineitem

59986052

58 min 23.35 sec

查询耗时


 

第一次

第二次

第三次

查询的结果

Q1

4.59

1.34

1.35

4 rows

Q2

17.85

12.75

12.45

100 rows

Q3

6.33

3.94

4.19

10 rows

Q4

0.75

0.78

0.78

5 rows

Q5

ERROR 1105 (HY000): rpc error: code = Unavailable desc = keepalive ping failed to receive ACK within timeout

Q6

12.26

0.36

0.34

1 rows

Q7

41.10

2.91

2.97

4 rows

Q8

54.85

17.86

17.77

2 rows

Q9

194.67

164.99

152.09

175 rows

Q10

22.33

21.29

21.25

20 rows

Q11

1.21

0.77

0.76

Empty set

Q12

9.08

1.00

1.02

2 rows

Q13

3.06

0.84

0.85

46 rows

Q14

2.11

1.84

1.72

1 rows

Q15

0.77

0.76

0.72

 

Q16

2.91

2.69

2.86

27838 rows

Q17

88.07

88.21

87.56

1 rows

Q18

3.99

2.93

2.90

84 rows

Q19

3.74

2.57

2.64

1

Q20

11.70

11.71

12.01

1746 rows

Q21

35.66

3.56

3.58

100 rows

Q22

0.58

0.43

0.43

4 rows


作者:Syw