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 |