TPC-DS
TPC-DS生成执行的数据
工具介绍
安装相应的软件:
|
|
进入 tools 目录,执行make
命令,编译
./dsdgen –help:
- DIR:数据存放目录。
- SCALE:数据量,以GB为单位。
- TABLE:生成哪张表的数据,一共有24张表哦。
- PARALLEL:生成的数据一共分为多少份,一般生成TB级数据才会用到。
- CHILD:当前数据是第几份,与PARALLEL配对使用。
- FORCE:强制写入数据。
总体过程分这么几步:
- 创建表结构
- 通过 tpcds 工具,生成数据文件
- 将数据导入到MySQL、PG 中
- 通过 tpcds 工具,生成将要执行的SQL,默认生成过程会有问题,这里需要改下模板
- 将所有的 SQL 拿出来,单独写一个执行程序,批量执行这些SQL,并打印出每条SQL的执行时间
下面分别介绍每步
创建表结构
创建 tpcds 库,将表结构导入
表结构在 tools目录下,tpcds.sql 这个文件
如果是普通的 MySQL导入没问题,对于TD-SQL会报错,因为 dbgen_version
这个表没有主键
这个表就是一个生成文件的记录表,没什么意义,可以忽略,如果想创建,就手动把主键加上即可
生成数据文件
生成数据,这里生成的数据是5G
|
|
会生成 25
个 dat 结尾的文件,这个文件是纯文本的
如果是在其他机器上生成的 dat 文件,可以通过 scp 拷贝到目标机器上:
|
|
将生成的数据文件导入
将 dat 文件导导入MySQL:
|
|
这里只导入了一张表的数据 call_center.dat
可以写一个脚本,完成批量导入
生成SQL
tpcds 生成 SQL:
|
|
注意,默认是没有mysql
方言的,需要在 query_templates 目录下执行
|
|
github tpcds-kit项目的issues里面作者建议用netezza来替代mysql,这两者语法差不多
参考这里
批量生成 SQL 的脚本:
|
|
需要将模板文件中增加一段,否则生成 SQL 会报错
define _END = “”;
写个脚本批量替换:
注意,这个脚本只能执行一次
|
|
再检查一下,是否每个脚本都有 define END
了:
|
|
检查一遍,发现这些少了,需要手动添加:
13 24 31 34
39 48 64
71 72 73 78
87 88 91 98
SQL兼容性对比
SQL 兼容性对比
查询编号 | mysqlv5.7 | PGv10 | PGv12 | hana | Sql-Server | Orale | TeraData |
---|---|---|---|---|---|---|---|
query1 | - | yes | yes | yes | yes | - | yes |
query2 | - | - | - | yes | - | yes | - |
query3 | yes | yes | yes | yes | yes | - | yes |
query4 | - | yes | yes | yes | yes | - | yes |
query5 | - | - | - | - | - | - | - |
query6 | yes | yes | yes | yes | yes | - | yes |
query7 | yes | yes | yes | yes | yes | - | yes |
query8 | - | yes | yes | yes | - | - | yes |
query9 | yes | yes | yes | yes | yes | yes | yes |
query10 | yes | yes | yes | yes | yes | - | yes |
query11 | - | yes | yes | yes | yes | - | yes |
query12 | - | - | - | - | - | - | - |
query13 | yes | yes | yes | yes | yes | yes | yes |
query14 | - | - | - | - | - | - | - |
query15 | yes | yes | yes | yes | - | - | yes |
query16 | - | - | - | - | - | - | - |
query17 | yes | yes | yes | yes | - | - | yes |
query18 | - | yes | yes | yes | yes | - | yes |
query19 | yes | yes | yes | yes | - | - | yes |
query20 | - | - | - | - | - | - | - |
query21 | - | - | - | - | - | - | - |
query22 | - | yes | yes | yes | yes | - | yes |
query23 | - | - | - | - | - | - | - |
query24 | - | - | - | - | yes | - | - |
query25 | yes | yes | yes | yes | yes | - | yes |
query26 | yes | yes | yes | yes | yes | - | yes |
query27 | - | yes | yes | yes | yes | - | yes |
query28 | yes | yes | yes | yes | yes | - | yes |
query29 | yes | yes | yes | yes | yes | - | yes |
query30 | - | - | - | - | - | - | - |
query31 | - | yes | yes | yes | yes | yes | - |
query32 | - | - | - | - | - | - | - |
query33 | - | yes | yes | yes | yes | - | - |
query34 | yes | yes | yes | yes | yes | yes | yes |
query35 | yes | yes | yes | yes | yes | - | yes |
query36 | - | - | - | - | - | - | - |
query37 | - | - | - | - | - | - | - |
query38 | - | yes | yes | yes | yes | - | yes |
query39 | - | - | - | - | - | - | - |
query40 | - | - | - | - | - | - | - |
query41 | yes | yes | yes | yes | - | - | - |
query42 | yes | yes | yes | yes | yes | - | yes |
query43 | yes | yes | yes | yes | yes | - | yes |
query44 | - | yes | yes | yes | yes | - | yes |
query45 | yes | yes | yes | yes | - | - | yes |
query46 | yes | yes | yes | yes | yes | - | yes |
query47 | - | yes | yes | yes | yes | - | yes |
query48 | - | yes | yes | yes | yes | yes | yes |
query49 | - | - | - | yes | - | - | - |
query50 | yes | yes | yes | yes | yes | - | yes |
query51 | - | yes | yes | yes | yes | - | yes |
query52 | yes | yes | yes | yes | yes | - | yes |
query53 | - | yes | yes | yes | yes | - | yes |
query54 | - | yes | yes | yes | yes | - | yes |
query55 | yes | yes | yes | yes | yes | - | yes |
query56 | - | yes | yes | yes | yes | - | - |
query57 | - | yes | yes | yes | yes | - | yes |
query58 | - | yes | yes | yes | yes | - | - |
query59 | - | yes | yes | yes | yes | - | yes |
query60 | - | yes | yes | yes | yes | - | - |
query61 | yes | yes | yes | yes | yes | - | yes |
query62 | yes | yes | yes | yes | - | - | yes |
query63 | - | yes | yes | yes | yes | - | yes |
query64 | - | yes | yes | yes | yes | yes | yes |
query65 | yes | yes | yes | yes | yes | - | - |
query66 | yes | yes | yes | - | - | - | - |
query67 | - | yes | yes | yes | yes | - | yes |
query68 | yes | yes | yes | yes | yes | - | yes |
query69 | yes | yes | yes | yes | yes | - | yes |
query70 | - | - | - | - | - | - | - |
query71 | yes | yes | yes | yes | yes | yes | - |
query72 | yes | yes | yes | - | - | - | - |
query73 | yes | yes | yes | yes | yes | yes | yes |
query74 | - | yes | yes | yes | yes | - | - |
query75 | - | yes | yes | yes | yes | - | - |
query76 | yes | yes | yes | yes | yes | - | yes |
query77 | - | - | - | - | - | - | - |
query78 | - | yes | yes | yes | yes | - | - |
query79 | yes | yes | yes | yes | - | - | yes |
query80 | - | - | - | - | - | - | - |
query81 | - | yes | yes | yes | yes | - | yes |
query82 | - | - | - | - | - | - | - |
query83 | - | yes | yes | yes | yes | - | - |
query84 | yes | yes | yes | yes | - | - | yes |
query85 | yes | yes | yes | yes | - | - | yes |
query86 | - | - | - | - | - | - | - |
query87 | - | yes | yes | yes | yes | - | yes |
query88 | yes | yes | yes | yes | yes | yes | yes |
query89 | - | yes | yes | yes | yes | - | yes |
query90 | yes | - | - | yes | yes | - | - |
query91 | yes | yes | yes | yes | yes | yes | yes |
query92 | - | - | - | - | - | - | - |
query93 | yes | yes | yes | yes | yes | - | yes |
query94 | - | - | - | - | - | - | - |
query95 | - | - | - | - | - | - | - |
query96 | yes | yes | yes | yes | yes | - | yes |
query97 | - | yes | yes | yes | yes | - | yes |
query98 | - | - | - | - | - | - | - |
query99 | yes | yes | yes | yes | - | - | yes |
总计 | 42 | 73 | 73 | 74 | 62 | 11 | 59 |