Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

步骤 6:重新创建测试数据集

您已为每张表选择了排序键和分配方式,接下来,您可以使用这些属性创建表并重新加载数据。您将使用 COPY 命令来自动分析加载数据并应用压缩编码。

重新创建测试数据集

  1. 在运行 CREATE TABLE 命令之前,您需要删除 SSB 表。

    执行以下命令。

    Copy
    drop table part cascade; drop table supplier cascade; drop table customer cascade; drop table dwdate cascade; drop table lineorder cascade;
  2. 创建具有排序键和分配方式的表。

    执行下面这组 SQL CREATE TABLE 命令。

    Copy
    CREATE TABLE part ( p_partkey integer not null sortkey distkey, p_name varchar(22) not null, p_mfgr varchar(6) not null, p_category varchar(7) not null, p_brand1 varchar(9) not null, p_color varchar(11) not null, p_type varchar(25) not null, p_size integer not null, p_container varchar(10) not null ); CREATE TABLE supplier ( s_suppkey integer not null sortkey, s_name varchar(25) not null, s_address varchar(25) not null, s_city varchar(10) not null, s_nation varchar(15) not null, s_region varchar(12) not null, s_phone varchar(15) not null) diststyle all; CREATE TABLE customer ( c_custkey integer not null sortkey, c_name varchar(25) not null, c_address varchar(25) not null, c_city varchar(10) not null, c_nation varchar(15) not null, c_region varchar(12) not null, c_phone varchar(15) not null, c_mktsegment varchar(10) not null) diststyle all; CREATE TABLE dwdate ( d_datekey integer not null sortkey, d_date varchar(19) not null, d_dayofweek varchar(10) not null, d_month varchar(10) not null, d_year integer not null, d_yearmonthnum integer not null, d_yearmonth varchar(8) not null, d_daynuminweek integer not null, d_daynuminmonth integer not null, d_daynuminyear integer not null, d_monthnuminyear integer not null, d_weeknuminyear integer not null, d_sellingseason varchar(13) not null, d_lastdayinweekfl varchar(1) not null, d_lastdayinmonthfl varchar(1) not null, d_holidayfl varchar(1) not null, d_weekdayfl varchar(1) not null) diststyle all; CREATE TABLE lineorder ( lo_orderkey integer not null, lo_linenumber integer not null, lo_custkey integer not null, lo_partkey integer not null distkey, lo_suppkey integer not null, lo_orderdate integer not null sortkey, lo_orderpriority varchar(15) not null, lo_shippriority varchar(1) not null, lo_quantity integer not null, lo_extendedprice integer not null, lo_ordertotalprice integer not null, lo_discount integer not null, lo_revenue integer not null, lo_supplycost integer not null, lo_tax integer not null, lo_commitdate integer not null, lo_shipmode varchar(10) not null );
  3. 为这些表加载相同的示例数据。

    1. 打开您在上一步中创建的 loadssb.sql 脚本。

    2. 删除每条 COPY 语句中的 compupdate off。这一次,您将允许 COPY 应用压缩编码。

      为方便参考,下面给出了编辑后的脚本:

      Copy
      copy customer from 's3://awssampledbuswest2/ssbgz/customer' credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' gzip region 'us-west-2'; copy dwdate from 's3://awssampledbuswest2/ssbgz/dwdate' credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' gzip region 'us-west-2'; copy lineorder from 's3://awssampledbuswest2/ssbgz/lineorder' credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' gzip region 'us-west-2'; copy part from 's3://awssampledbuswest2/ssbgz/part' credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' gzip region 'us-west-2'; copy supplier from 's3://awssampledbuswest2/ssbgz/supplier' credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' gzip region 'us-west-2';
    3. 保存文件。

    4. 运行该 SQL 脚本或将这些命令复制粘贴到您的 SQL 客户端,以执行 COPY 命令。

      注意

      加载操作需要花费约 10 到 15 分钟时间。您可以趁现在再去接杯茶,或是去喂喂鱼。

      您的结果应类似于以下内容。

      Copy
      Warnings: Load into table 'customer' completed, 3000000 record(s) loaded successfully. ... ... Script execution finished Total script execution time: 12m 15s
    5. 在基准表中记录加载时间。

      基准 优化前 优化后
      加载时间(五张表) 10m 23s 12m 15s
      占用存储
      LINEORDER 51024
      PART 384
      CUSTOMER 200
      DWDATE 160
      SUPPLIER 152
      总存储空间 51920
      查询执行时间
      查询 1 6.97
      查询 2 12.81
      查询 3 13.39
      总执行时间 33.17

下一步

步骤 7:优化后重新测试系统性能