Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

步骤 2:测试系统性能以建立基准

在优化表前后测试系统性能时,您需要记录以下详细信息:

  • 加载时间

  • 占用存储

  • 查询性能

本教程中的示例基于使用四节点的 dw2.large 集群。即使您使用相同的集群配置,您的结果也会有所不同。系统性能受到许多因素的影响,没有哪两个系统的执行会一模一样。

您将使用下面的基准表来记录结果。

基准 优化前 优化后
加载时间(五张表)
占用存储
LINEORDER
PART
CUSTOMER
DWDATE
SUPPLIER
总存储空间
查询执行时间
查询 1
查询 2
查询 3
总执行时间

测试系统性能以建立基准

  1. 记下所有五张表的累计加载时间并将其输入到基准表的“优化前”列中。

    这是您在上一步中记录的值。

  2. 记录存储使用情况。

    查询 STV_BLOCKLIST 表,确定每张表使用多少个 1 MB 的磁盘空间数据块,并将结果记录到基准表中。

    Copy
    select stv_tbl_perm.name as table, count(*) as mb from stv_blocklist, stv_tbl_perm where stv_blocklist.tbl = stv_tbl_perm.id and stv_blocklist.slice = stv_tbl_perm.slice and stv_tbl_perm.name in ('lineorder','part','customer','dwdate','supplier') group by stv_tbl_perm.name order by 1 asc;

    您的结果应与如下显示类似:

    Copy
    table | mb ----------+------ customer | 384 dwdate | 160 lineorder | 51024 part | 200 supplier | 152
  3. 测试查询性能。

    首次运行查询时,Amazon Redshift 会编译该代码,然后将编译好的代码发送到计算节点。比较查询的执行时间时,您不应使用首次执行查询的结果,而应该比较每个查询第二次执行的时间。有关更多信息,请参阅 影响查询性能的因素

    运行以下查询两次以消除编译时间。在基准表中记录第二次执行每个查询的时间。

    Copy
    -- Query 1 -- Restrictions on only one dimension. select sum(lo_extendedprice*lo_discount) as revenue from lineorder, dwdate where lo_orderdate = d_datekey and d_year = 1997 and lo_discount between 1 and 3 and lo_quantity < 24; -- Query 2 -- Restrictions on two dimensions select sum(lo_revenue), d_year, p_brand1 from lineorder, dwdate, part, supplier where lo_orderdate = d_datekey and lo_partkey = p_partkey and lo_suppkey = s_suppkey and p_category = 'MFGR#12' and s_region = 'AMERICA' group by d_year, p_brand1 order by d_year, p_brand1; -- Query 3 -- Drill down in time to just one month select c_city, s_city, d_year, sum(lo_revenue) as revenue from customer, lineorder, supplier, dwdate where lo_custkey = c_custkey and lo_suppkey = s_suppkey and lo_orderdate = d_datekey and (c_city='UNITED KI1' or c_city='UNITED KI5') and (s_city='UNITED KI1' or s_city='UNITED KI5') and d_yearmonth = 'Dec1997' group by c_city, s_city, d_year order by d_year asc, revenue desc;

    您的第二次结果应与如下显示类似:

    Copy
    SELECT executed successfully Execution time: 6.97s (Statement 1 of 3 finished) SELECT executed successfully Execution time: 12.81s (Statement 2 of 3 finished) SELECT executed successfully Execution time: 13.39s (Statement 3 of 3 finished) Script execution finished Total script execution time: 33.17s

下面的基准表显示了本教程中使用的群集的示例结果。

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

下一步

步骤 3:选择排序键