更新时间:2024-08-20 GMT+08:00

TPC-H数据构建

  1. 官网获取TPC-H工具。
  2. 登录ECS云服务器,执行如下命令创建TPC-H存放目录。

    1
    2
    mkdir -p /data1/script/tpch-kit/tpch1000X
    mkdir -p /data2/script/tpch-kit/tpch1000X
    

  3. 将获取的TPC-H工具通过SFTP工具上传到ECS的/data1/script/tpch-kit目录执行以下命令解压。

    1
    cd /data1/script/tpch-kit && unzip tpch_v3.0.0.zip
    

  4. 执行如下命令编译生成数据构建工具dbgen。

    编译之前需要修改dbgen目录下的两个文件:makefile.suite和tpcd.h

    1. 修改makefile.suite
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      #makefile.suite 的更改参数如下(103行-111行)
      
      CC      = gcc
      # Current values for DATABASE are: INFORMIX, DB2, TDAT (Teradata)
      #                                  SQLSERVER, SYBASE, ORACLE, VECTORWISE
      # Current values for MACHINE are:  ATT, DOS, HP, IBM, ICL, MVS,
      #                                  SGI, SUN, U2200, VMS, LINUX, WIN32
      # Current values for WORKLOAD are:  TPCH
      
      DATABASE = POSTGRESQL     #程序给定参数没有postgresql ,修改tpcd.h 添加POSTGRESQL脚本
      MACHINE = LINUX
      WORKLOAD = TPCH
      
    2. 修改tpcd.h
      1
      2
      3
      4
      5
      6
      7
      8
      9
      //在tpcd.h文件增加如下语句
      #ifdef POSTGRESQL
      #define GEN_QUERY_PLAN  "EXPLAIN"
      #define START_TRAN      "BEGIN TRANSACTION"
      #define END_TRAN        "COMMIT;"
      #define SET_OUTPUT      ""
      #define SET_ROWCOUNT    "LIMIT %d\n"
      #define SET_DBASE       ""
      #endif /* POSTGRESQL */
      
    1
    2
    3
    4
    cd TPC-H_Tools_v3.0.0/dbgen
    cp makefile.suite makefile
    make -f makefile
    cp -R /data1/script/tpch-kit/TPC-H_Tools_v3.0.0/ /data2/script/tpch-kit/
    

  1. 登录ECS,执行如下命令生成tpch 1000X数据,本示例分两个数据盘同步生成tpch 1000x数据。

    Tpch 1000X数据文件总大小约1100GB,请确认ECS的磁盘空间足够。

    1. 进入/data1/script/tpch-kit/TPC-H_Tools_v3.0.0/dbgen目录后,执行如下命令:
      1
      for c in {1..5};do (./dbgen -s 1000 -C 10 -S ${c} -f > /dev/null 2>&1 &);done
      
    2. 进入/data2/script/tpch-kit/TPC-H_Tools_v3.0.0/dbgen目录后,执行如下命令:
      1
      for c in {6..10};do (./dbgen -s 1000 -C 10 -S ${c} -f > /dev/null 2>&1 &);done
      

      其中:

      • -s 指定数据规模,本例为1000。
      • -C 指定分成几个chunk,本例为10。
      • -S 指定当前是第几个chunk,此处不需修改。

  2. 执行以下命令,判断数据文件的生成进度。也可以通过ps ux|grep dbgen,查看生成数据文件的进程是否退出。

    1
    2
    du -sh /data1/script/tpch-kit/TPC-H_Tools_v3.0.0/dbgen/*.tbl*
    du -sh /data2/script/tpch-kit/TPC-H_Tools_v3.0.0/dbgen/*.tbl*
    

  3. 将Tpch 1000X数据转移至指定目录。

    1
    2
    mv /data1/script/tpch-kit/TPC-H_Tools_v3.0.0/dbgen/*.tbl* /data1/script/tpch-kit/tpch1000X
    mv /data2/script/tpch-kit/TPC-H_Tools_v3.0.0/dbgen/*.tbl* /data2/script/tpch-kit/tpch1000X