将 orders 表与自身聚合,生成 20,000*20,000 行数据的笛卡尔积,开启 8 个并行执行,对比执行时间,验证云数据库 OceanBase 的实时分析能力。
概念介绍
OLAP(Online Analytical Processing)
是一种面向分析的、多维数据分析技术。它适用于处理大规模、多维的数据集,能够帮助用户进行数据分析、数据挖掘、业务决策等。
并行执行
OceanBase 数据库的并行执行指的是在分布式架构下进行的并发处理。OceanBase 数据库采用了分布式架构,将数据分片存储在不同的节点上,通过数据分片和任务分片实现了数据和计算的并行处理。在OceanBase 中,每个节点都可以独立地执行任务,并且可以通过高速的网络互相通信,实现数据的交互和同步。
PARALLEL Hint 语法介绍
MySQL 客户端 -c、hint 不会影响业务,不会报错 PARALLEL Hint 是语句级的 Hint,用来指示优化器指定并行操作可使用的并行线程的数量。此 Hint 将覆盖初始化参数 PARALLEL_DEGREE_ POLICY 的值。该 Hint 可以作为 SELECT、INSERT、UPDATE 和 DELETE 语句的一部分,以及表扫描的一部分。如果违反了任何的并行限制,则 PARALLEL Hint 被忽略。更多内容参见与并行执行相关的 Hint。通过 Hint 可以使优化器生成指定的执行计划。更多内容参见Hint 概述。PARALLEL Hint 的语法如下:
/*+ PARALLEL(n) */
PARALLE Hint 中参数 n 的值用来指定并行度。如果同时进行了排序或分组操作,那么可以使用的线程数量是 PARALLEL Hint 设定值的两倍。
笛卡尔积:
笛卡尔积是指将两个表中的所有行进行组合,得到一个新的表。如有表 A 和表 B,它们分别包含如下数据:
A表:
名称
价格
苹果
5
香蕉
3
B表:
颜色
库存
红色
100
黄色
200
那么,A 和 B 的笛卡尔积就是一个新的表,其中包含如下行:
名称
价格
颜色
库存
苹果
5
红色
100
苹果
5
黄色
200
香蕉
3
红色
100
香蕉
3
黄色
200
语法介绍
JOIN 子句用于表的联接。数据库中的联接语句用于将数据库中的两个或多个表根据联接条件组合起来。由"联接"生成的集合, 可以被保存为表,或者当成表来使用。联接语句的含义是把两张表的属性通过它们的值组合在一起。更多内容参见JOIN 子句。
操作步骤
打开新的 SQL 窗口并单击请选择数据库, 进入 tutorial_database 数据库。
执行如下命令,将 orders 表与自身聚合 20,000*20,000 行数据的笛卡尔积,进行运算。
select count(1) from orders a join (select * from orders) b;
查看执行时间 4.25s(数据仅供参考)。
打开新的 SQL 窗口并单击请选择数据库, 进入 tutorial_database 数据库。
执行如下命令,开启 8 个并行执行,加快运算。
select /*+parallel(8)*/ count(1) from orders a join (select * from orders) b;
查看执行时间 1.99s(数据仅供参考)。
分析能力分析
当不开启并行执行时,执行时间约为 4.25s,开启 8 个并行执行后,执行时间为 1.99s,执行时间更短。 OceanBase 基于分布式架构,在保障高性能的交易处理同时,能够完成实时分析、跑批等分析场景,在不影响 OLTP 能力的情况下,并最大程度降低数据冗余,帮企业大幅降低总成本。
上述数据仅供参考,实际数值请以您的实际实验结果为准。