免费体验PolarDB MySQL列存索引(IMCI)

更新时间:

本文介绍了如何免费体验PolarDB MySQL版列存索引(IMCI)功能。

背景

PolarDB列存索引适用于:对在线数据有轻量型数据分析需求的场景,如实时报表;ETL数据加速计算场景:依托PolarDB基于列存索引提供的强大而灵活的计算能力,在PolarDB中使用SQL来实现ETL功能。

列存索引的核心优势如下:

  • 100%兼容MySQL:列存具有与MySQL一致的数据类型系统,支持灵活的类型转换,100%兼容MySQL协议。

  • 行列混合存储,降低成本:同时支持行存储和列存储两种格式,且实时保证行列的事务级一致。列存更具有低成本的优势。

  • 优秀的轻量化数据分析能力:使用列存索引加速部分数据分析应用场景。

阿里云提供了数据库解决方案功能体验馆,提供真实免费的PolarDB集群环境和开箱即用的测试方法,您可以在线快捷体验IMCI带来的查询效率提升效果。

影响

本功能体验不涉及生产环境的部署,因此不会影响业务。

费用

本次体验中,由于体验涉及到的资源不归属于您,因此不会产生任何费用,您可以放心体验。

体验内容

体验环境

在本免费体验中,阿里云提供了预置环境供您操作体验,预置环境的详情如下:

  • 集群:提供了一个PolarDB MySQL版集群。具体如下:

    • 内核版本: 8.0.2.2.20

    • 产品版本:企业版

    • 系列:集群版通用规格

    • 集群规格:集群包含1个主节点、1个只读节点和1个只读列存节点,规格都为4核8 GB

    • 存储类型: PSL5

  • 测试数据集:集群中预置了标准测试集TPCH 100G的数据集,其中具体查询所用的表为part表,数据量为20,000,000条数据。

观测指标

  • CPU占用率:集群中主节点、只读节点和只读列存节点的平均CPU使用率。单位:%。

  • 查询耗时:执行特定SQL所耗费的时间。单位:秒。

操作步骤

  1. 进入瑶池解决方案体验馆

  2. 单击核心功能体验,然后单击列存索引-加速TP复杂SQL查询免费体验按钮,进入如下页面:

    image

  3. 单击页面下方的创建免费体验任务按钮。

  4. 确认创建IMCI任务对话框中,单击确定

  5. 稍等片刻后,可以看到您创建的体验任务。

    image.png

  6. 单击查看详情,进入实时查询体验页面。

  7. 首先执行未开启IMCI功能的正常查询任务。

    说明
    • 请根据页面按钮提示,手动单击按钮执行每一步操作。若在倒计时结束时没有手动单击按钮,则会自动执行对应操作。

    • 整个体验过程中,您可以在左侧的趋势图中观测CPU占用率。

    1. 单击启动任务按钮。

    2. 单击切换到普通查询库按钮,自动执行如下命令,切换至普通查询库。

      use tpch;
    3. 单击查看执行计划按钮,自动执行如下命令,查看如下SQL的执行计划。

      explain format=TREE SELECT SUM(p_retailprice), AVG(p_retailprice)
          ->  , MIN(p_retailprice), MAX(p_retailprice)
          ->  FROM part
          ->  GROUP BY p_type
          ->  ORDER BY 1
          ->  LIMIT 1;

      返回结果如下:

      +-----------------------------------------------------------------------------+
      | EXPLAIN                                                                     |
      +-----------------------------------------------------------------------------+
      | -> Limit: 1 row(s)
          -> Sort: <temporary>.SUM(p_retailprice), limit input to 1 row(s) per chunk
              -> Table scan on <temporary>
                  -> Aggregate using temporary table
                      -> Table scan on part  (cost=1817555.30 rows=17644998)
       |
      +-----------------------------------------------------------------------------+
      1 row in set (0.00 sec)
    4. 单击执行SQL按钮,自动执行以下SQL语句:

      SELECT SUM(p_retailprice), AVG(p_retailprice)
          ->    , MIN(p_retailprice), MAX(p_retailprice)
          ->    FROM part
          ->    GROUP BY p_type
          ->     ORDER BY 1
          ->     LIMIT 1;

      返回结果如下,执行时间为23.73秒。

      +--------------------+--------------------+--------------------+--------------------+
      | SUM(p_retailprice) | AVG(p_retailprice) | MIN(p_retailprice) | MAX(p_retailprice) |
      +--------------------+--------------------+--------------------+--------------------+
      |       198461679.87 |        1498.366804 |             901.47 |            2098.51 |
      +--------------------+--------------------+--------------------+--------------------+
      1 row in set (23.73 sec)
  8. 然后执行开启IMCI功能后的查询任务。

    说明
    • 请根据页面按钮提示,手动单击按钮执行每一步操作。若在倒计时结束时没有手动单击按钮,则会自动执行对应操作。

    • 整个体验过程中,您可以在左侧的趋势图中观测CPU占用率。

    1. 单击切换到IMCI读Endpoint,通过包含只读列存节点的集群地址(Endpoint)连接到同一个查询库。

      说明

      由于切换endpoint连接数据库的过程涉及密码,因此此处只展示连接成功后切换至tpch数据库的SQL语句。

      use tpch;
    2. 单击查看执行计划按钮,自动执行如下命令,查看如下SQL的执行计划。

      explain format=TREE SELECT SUM(p_retailprice), AVG(p_retailprice)
          ->    , MIN(p_retailprice), MAX(p_retailprice)
          ->    FROM part
          ->    GROUP BY p_type
          ->     ORDER BY 1
          ->     LIMIT 1;

      返回结果如下:

      +----+--------------------------+------+--------------------------------------------------------------+
      | ID | Operator                 | Name | Extra Info                                                   |
      +----+--------------------------+------+--------------------------------------------------------------+
      |  1 | Select Statement         |      | IMCI Execution Plan (max_dop = 4, max_query_mem = 858993459) |
      |  2 | └─Compute Scalar         |      |                                                              |
      |  3 |   └─Limit                |      | Offset=0 Limit=1                                             |
      |  4 |     └─Sort               |      | Sort Key: SUM(part.p_retailprice) ASC                        |
      |  5 |       └─Hash Groupby     |      | Group Key: part.p_type                                       |
      |  6 |         └─Table Scan     | part |                                                              |
      +----+--------------------------+------+--------------------------------------------------------------+
      6 rows in set (0.01 sec)
    3. 单击执行SQL按钮,自动执行以下SQL语句:

      SELECT SUM(p_retailprice), AVG(p_retailprice)
          ->    , MIN(p_retailprice), MAX(p_retailprice)
          ->    FROM part
          ->    GROUP BY p_type
          ->    ORDER BY 1
          ->    LIMIT 1;

      返回结果如下,执行时间为0.58秒。

      +--------------------+--------------------+--------------------+--------------------+
      | SUM(p_retailprice) | AVG(p_retailprice) | MIN(p_retailprice) | MAX(p_retailprice) |
      +--------------------+--------------------+--------------------+--------------------+
      |       198461679.87 |        1498.366804 |             901.47 |            2098.51 |
      +--------------------+--------------------+--------------------+--------------------+
      1 row in set (0.58 sec)
    4. 整个执行SQL的过程中,您可以在左侧趋势图中观测集群平均CPU使用率的变化情况。

      说明

      由于实时监控数据可能存在延迟,为了确保展示完整的CPU变化情况,趋势图中会在SQL执行完后,自动延长一定监控时间(2~3秒)。

  9. (可选)对于已创建的任务,您可以在IMCI页面,单击体验记录,在任务列表中,单击全部任务我的任务,查看体验结果及其详情。

结果分析

列存索引IMCI对查询有明显加速作用

  1. 从执行时间上看,当切换至包含只读列存节点的Endpoint后,复杂查询自动由只读列存节点执行,执行时间大幅缩短,从23.73秒缩短至0.58秒。

  2. 从执行计划上看,当切换至包含只读列存节点的Endpoint后,执行计划包含IMCI Execution Plan,即表示使用列存索引加速功能。

列存索引IMCI对查询的处理更高效

说明

由于实时监控数据可能存在延迟,为了确保展示完整的CPU变化情况,趋势图中会在SQL执行完后,自动延长一定监控时间(2~3秒)。

从执行时间和对应的CPU占用率可以看到,IMCI通过更低的CPU占用率实现了更快的查询。

image.png

相关内容

专家面对面

您可以加入官方钉钉群进行咨询,获取更多技术支持。钉钉群号:27520023189。