本文介绍了如何免费体验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所耗费的时间。单位:秒。
操作步骤
进入瑶池解决方案体验馆。
单击核心功能体验,然后单击列存索引-加速TP复杂SQL查询的免费体验按钮,进入如下页面:
单击页面下方的创建免费体验任务按钮。
在确认创建IMCI任务对话框中,单击确定。
稍等片刻后,可以看到您创建的体验任务。
单击查看详情,进入实时查询体验页面。
首先执行未开启IMCI功能的正常查询任务。
说明请根据页面按钮提示,手动单击按钮执行每一步操作。若在倒计时结束时没有手动单击按钮,则会自动执行对应操作。
整个体验过程中,您可以在左侧的趋势图中观测CPU占用率。
单击启动任务按钮。
单击切换到普通查询库按钮,自动执行如下命令,切换至普通查询库。
use tpch;
单击查看执行计划按钮,自动执行如下命令,查看如下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)
单击执行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)
然后执行开启IMCI功能后的查询任务。
说明请根据页面按钮提示,手动单击按钮执行每一步操作。若在倒计时结束时没有手动单击按钮,则会自动执行对应操作。
整个体验过程中,您可以在左侧的趋势图中观测CPU占用率。
单击切换到IMCI读Endpoint,通过包含只读列存节点的集群地址(Endpoint)连接到同一个查询库。
说明由于切换endpoint连接数据库的过程涉及密码,因此此处只展示连接成功后切换至tpch数据库的SQL语句。
use tpch;
单击查看执行计划按钮,自动执行如下命令,查看如下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)
单击执行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)
整个执行SQL的过程中,您可以在左侧趋势图中观测集群平均CPU使用率的变化情况。
说明由于实时监控数据可能存在延迟,为了确保展示完整的CPU变化情况,趋势图中会在SQL执行完后,自动延长一定监控时间(2~3秒)。
(可选)对于已创建的任务,您可以在IMCI页面,单击体验记录,在任务列表中,单击全部任务或我的任务,查看体验结果及其详情。
结果分析
列存索引IMCI对查询有明显加速作用
从执行时间上看,当切换至包含只读列存节点的Endpoint后,复杂查询自动由只读列存节点执行,执行时间大幅缩短,从23.73秒缩短至0.58秒。
从执行计划上看,当切换至包含只读列存节点的Endpoint后,执行计划包含IMCI Execution Plan,即表示使用列存索引加速功能。
列存索引IMCI对查询的处理更高效
由于实时监控数据可能存在延迟,为了确保展示完整的CPU变化情况,趋势图中会在SQL执行完后,自动延长一定监控时间(2~3秒)。
从执行时间和对应的CPU占用率可以看到,IMCI通过更低的CPU占用率实现了更快的查询。
相关内容
专家面对面
您可以使用钉钉扫码加入官方钉钉群,获取更多技术支持。