暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OceanBase 4.0与3.x有哪些差异?

SQL学习者 2023-08-10
399

1、如何进行TPC-H测试

▋ OBD一键自动测试


OBD(OceanBase Deployer)是 OceanBase 社区版的安装部署工具,作为包管理器,可以用来管理 OceanBase 社区版所有的工具。为了帮助用户更简单、更快速地进行性能测试, OBD 已集成了Sysbench、TPC-C、TPC-H 三种常用测试工具,你可以一键进行全流程的性能测试。测试中过程中 OBD 会根据当前运行环境自动进行参数调优,以跑出最佳的性能。


在完成 OBD 及 OceanBase 社区版安装后,用户可以通过一条简单的命令,就可以完成整个 TPC-H 流程的测试:


    obd test tpch obperf --tenant=tpch_mysql -s 100 --remote-tbl-dir=/tmp/tpch100


    图1 TPC-H 测试演示(obd)

    OBD 既可以全自动式一键进行 TPC-H 测试,也可以手动设置各种参数来白盒体验测试的各个步骤。下面介绍几个使用 OBD 进行TPC-H 性能测试中,比较重要的参数。


    • 查看流程及操作日志:如果用户觉得OBD的执行过程相对黑盒,希望了解 OBD 一键测试的过程中,具体进行哪些操作,可以加上'-v',OBD 将在控制台详细打印出整个操作的流程,包括生成数据、导数、参数调优、合并、执行查询 SQL 等所有的操作日志。
    • 关闭数据文件传输:TPC-H 需要指定一台 OceanBase 目标服务器作为执行对象。在执行 TPC-H 测试前,OBD 会将测试需要的数据文件传输到指定机器的指定目录下,这些文件可能会比较大,如果用户已经在目标机器上准备好数据文件,可以通过 '--dt=true' 选项关闭传输,OBD 将直接从导数步骤开始进行 TPC-H 测试。
    • 执行查询 SQL:如果用户已经完成了导数,只是想简单的执行查询SQL,可以加上'--test-only=true',OBD 会进行参数调优并执行22条查询语句,操作完成后,还会自动将调优参数恢复成系统默认值。如果用户希望手动体验参数调优带来的性能差异,可以再加上'-O 0',这样 OBD 将不会进行任何参数调优,仅仅执行查询语句。用户可以自由组合各种参数,体验 OceanBase 带来的性能收益。


    ▋ 手动进行 TPC-H 测试


    如果用户希望通过原始的流程,手动体验整个 TPC-H 的测试,OceanBase 也在官网供了详细的测试流程和步骤。这里主要对 4.0 版本与之前 3.x 版本的步骤差异进行介绍。


    • 参数调整:OceanBase 4.0 版本引入了向量化和存储下压等新的特性,这些特性对性能提升有重大影响。需要注意的是,在存储下压和向量化设置后,建议用户进行刷新 plan cache 操作,以避免因前期执行 query 导致旧的 plan cache 被命中。
    • 建表语句调整:由于扫表性能的提升,OceanBase 4.0 版本后不再需要额外加索引。建表时可以将编码格式指定为 CONDENSED,数据会被编码并以 selective encoding 格式保存,有利于提升查询的性能。
    • 合并步骤调整:4.0 引入了租户级别的合并,执行合并命令需要在对应的租户下执行,或在系统租户下指定合并的租户。相应的合并相关的内部表也进行了调整,用户可以在系统租户下查询 CDB_OB_MAJOR_COMPACTION,获取所有租户合并的全局信息。
    • 手动收集统计信息:4.0 版本后,合并不再收集统计信息,用户可以手动进行统计信息的收集。在 OceanBase 优化器中,可统计信息有表统计信息(table level statistics)和列统计信息(column level statistics)两种。统计信息收集后,优化器的估算会更准确,生成的执行计划也会更快。


    目前 OceanBase 优化器针对统计信息收集提供了两种方式:DMBS_STATS(推荐)、ANALYZE 命令行。使用 OBD 或者 OCP 部署的用户,可以使用自带的 DMBS_STATS 包,通过 call dbms_stats.gather_table_stats 等方式进行统计信息的收集。


    如果使用 ANALYZE 的方式,MySQL 租户需要开启 SQL 拓展功能(执行alter system set enable_sql_extension=True)。用户也可以设置_force_parallel_query_dop,进一步提升统计信息收集的执行并发度。


    ▋ 重要参数解析


    1. 向量化参数:_rowsets_enabled


    4.0 增加向量化执行功能(vectorization),使得 OceanBase 具备一次处理多行数据的能力,大幅减少函数调用次数和指令调用 cache miss,提高 SQL 执行器能力。


    为了提高 SQL 执行器的灵活性,我们提供了配置项_rowsets_enabled , 控制整个向量化执行的开启关闭。向量化是租户级配置项,在系统租户下执行一定要指定租户名,或者在普通租户下执行。向量化影响所有 SQL 的 RT(响应时间),建议用户在测试时开启。


    2. 存储下压参数:_pushdown_storage_level


    随着对 AP 场景不断深入优化,存储层引入多个将过滤、计算下压到底层的新特性,该配置项_pushdown_storage_level 进行控制。当参数设置为 3 时,将开启静态数据快速扫、filter 下推以及聚合下推。存储层将提前对数据进行计算或者过滤,从而减少无效数据的处理并显著提升计算效率。


    2、TPC-H测试结果解读

    以下测试结果的硬件环境,均为 3 台 32C 128G(ecs.g7.8xlarge)节点、每台机器上挂载 3 块 500G ESSD 云盘,测试数据量为 100GB。


    ▋ 相比上一个版本,OceanBase 4.0 带来了哪些变化?


    我们将 OceanBase 社区版 4.0.0、社区版 3.1.0 进行 TPC-H 100GB 测试对比,按照顺序执行 22 条查询 SQL。从数据上来看,整体性能相比于 3.1 版本提升 5 倍。



    ▋ 相比开源OLAP数据库,OceanBase 4.0带来了哪些新可能

    我们将 OceanBase 社区版 4.0.0 与 Greenplum 6.22.1 进行 TPC-H 性能对比,从实际测试数据上可以看到,同等硬件条件下,OceanBase 社区版 4.0 的 AP 能力是Greenplum 6.22 的 5-6 倍,部分场景下性能差异可达到 9 倍。

    图2 TPC-H 100 GB Results (By Query)



    图3 TPC-H 100 GB Results (Total Time)


    3、总结

    TPC-H 22 条标准 SQL 中,包含了用户数据分析 SQL 里常用的聚合分析、连接查询、表达式计算、子查询等操作,反映了数据库在并发查询、表扫描、filter 下压等方面的通用能力。OceanBase 在 TPC-H 测试中响应时间的大幅降低,体现了OceanBase 在 OLAP 方面能力的不断突破。


    从 2010 年开始立项的 OceanBase,一直是原生分布式数据库的信仰者、开拓者。我们希望能够基于“一个系统,一份数据” 为用户提供同时处理交易和实时分析的高性价比能力。 自登顶 TPC-C 榜首,OceanBase 不断稳步迈进提升 OLAP 的能力。4.0 版本 OceanBase 的实时分析能力,无论是相对 3.x 版本,还是专门的 OLAP 数据库,都有了质的飞跃。我们希望真正帮助企业解决传统 ETL 带来的数据同步延迟和业务复杂度问题,帮助用户在实际场景中能够同时兼顾到 OLTP 类的事务处理和 OLAP 类的报表分析、业务决策等实时分析能力,让数据库服务和业务应用变得简单。

    1、如何进行TPC-H测试

    ▋ OBD一键自动测试


    OBD(OceanBase Deployer)是 OceanBase 社区版的安装部署工具,作为包管理器,可以用来管理 OceanBase 社区版所有的工具。为了帮助用户更简单、更快速地进行性能测试, OBD 已集成了Sysbench、TPC-C、TPC-H 三种常用测试工具,你可以一键进行全流程的性能测试。测试中过程中 OBD 会根据当前运行环境自动进行参数调优,以跑出最佳的性能。


    在完成 OBD 及 OceanBase 社区版安装后,用户可以通过一条简单的命令,就可以完成整个 TPC-H 流程的测试:


      obd test tpch obperf --tenant=tpch_mysql -s 100 --remote-tbl-dir=/tmp/tpch100


      图1 TPC-H 测试演示(obd)

      OBD 既可以全自动式一键进行 TPC-H 测试,也可以手动设置各种参数来白盒体验测试的各个步骤。下面介绍几个使用 OBD 进行TPC-H 性能测试中,比较重要的参数。


      • 查看流程及操作日志:如果用户觉得OBD的执行过程相对黑盒,希望了解 OBD 一键测试的过程中,具体进行哪些操作,可以加上'-v',OBD 将在控制台详细打印出整个操作的流程,包括生成数据、导数、参数调优、合并、执行查询 SQL 等所有的操作日志。
      • 关闭数据文件传输:TPC-H 需要指定一台 OceanBase 目标服务器作为执行对象。在执行 TPC-H 测试前,OBD 会将测试需要的数据文件传输到指定机器的指定目录下,这些文件可能会比较大,如果用户已经在目标机器上准备好数据文件,可以通过 '--dt=true' 选项关闭传输,OBD 将直接从导数步骤开始进行 TPC-H 测试。
      • 执行查询 SQL:如果用户已经完成了导数,只是想简单的执行查询SQL,可以加上'--test-only=true',OBD 会进行参数调优并执行22条查询语句,操作完成后,还会自动将调优参数恢复成系统默认值。如果用户希望手动体验参数调优带来的性能差异,可以再加上'-O 0',这样 OBD 将不会进行任何参数调优,仅仅执行查询语句。用户可以自由组合各种参数,体验 OceanBase 带来的性能收益。


      ▋ 手动进行 TPC-H 测试


      如果用户希望通过原始的流程,手动体验整个 TPC-H 的测试,OceanBase 也在官网供了详细的测试流程和步骤。这里主要对 4.0 版本与之前 3.x 版本的步骤差异进行介绍。


      • 参数调整:OceanBase 4.0 版本引入了向量化和存储下压等新的特性,这些特性对性能提升有重大影响。需要注意的是,在存储下压和向量化设置后,建议用户进行刷新 plan cache 操作,以避免因前期执行 query 导致旧的 plan cache 被命中。
      • 建表语句调整:由于扫表性能的提升,OceanBase 4.0 版本后不再需要额外加索引。建表时可以将编码格式指定为 CONDENSED,数据会被编码并以 selective encoding 格式保存,有利于提升查询的性能。
      • 合并步骤调整:4.0 引入了租户级别的合并,执行合并命令需要在对应的租户下执行,或在系统租户下指定合并的租户。相应的合并相关的内部表也进行了调整,用户可以在系统租户下查询 CDB_OB_MAJOR_COMPACTION,获取所有租户合并的全局信息。
      • 手动收集统计信息:4.0 版本后,合并不再收集统计信息,用户可以手动进行统计信息的收集。在 OceanBase 优化器中,可统计信息有表统计信息(table level statistics)和列统计信息(column level statistics)两种。统计信息收集后,优化器的估算会更准确,生成的执行计划也会更快。


      目前 OceanBase 优化器针对统计信息收集提供了两种方式:DMBS_STATS(推荐)、ANALYZE 命令行。使用 OBD 或者 OCP 部署的用户,可以使用自带的 DMBS_STATS 包,通过 call dbms_stats.gather_table_stats 等方式进行统计信息的收集。


      如果使用 ANALYZE 的方式,MySQL 租户需要开启 SQL 拓展功能(执行alter system set enable_sql_extension=True)。用户也可以设置_force_parallel_query_dop,进一步提升统计信息收集的执行并发度。


      ▋ 重要参数解析


      1. 向量化参数:_rowsets_enabled


      4.0 增加向量化执行功能(vectorization),使得 OceanBase 具备一次处理多行数据的能力,大幅减少函数调用次数和指令调用 cache miss,提高 SQL 执行器能力。


      为了提高 SQL 执行器的灵活性,我们提供了配置项_rowsets_enabled , 控制整个向量化执行的开启关闭。向量化是租户级配置项,在系统租户下执行一定要指定租户名,或者在普通租户下执行。向量化影响所有 SQL 的 RT(响应时间),建议用户在测试时开启。


      2. 存储下压参数:_pushdown_storage_level


      随着对 AP 场景不断深入优化,存储层引入多个将过滤、计算下压到底层的新特性,该配置项_pushdown_storage_level 进行控制。当参数设置为 3 时,将开启静态数据快速扫、filter 下推以及聚合下推。存储层将提前对数据进行计算或者过滤,从而减少无效数据的处理并显著提升计算效率。


      2、TPC-H测试结果解读

      以下测试结果的硬件环境,均为 3 台 32C 128G(ecs.g7.8xlarge)节点、每台机器上挂载 3 块 500G ESSD 云盘,测试数据量为 100GB。


      ▋ 相比上一个版本,OceanBase 4.0 带来了哪些变化?


      我们将 OceanBase 社区版 4.0.0、社区版 3.1.0 进行 TPC-H 100GB 测试对比,按照顺序执行 22 条查询 SQL。从数据上来看,整体性能相比于 3.1 版本提升 5 倍。



      ▋ 相比开源OLAP数据库,OceanBase 4.0带来了哪些新可能

      我们将 OceanBase 社区版 4.0.0 与 Greenplum 6.22.1 进行 TPC-H 性能对比,从实际测试数据上可以看到,同等硬件条件下,OceanBase 社区版 4.0 的 AP 能力是Greenplum 6.22 的 5-6 倍,部分场景下性能差异可达到 9 倍。

      图2 TPC-H 100 GB Results (By Query)



      图3 TPC-H 100 GB Results (Total Time)


      3、总结

      TPC-H 22 条标准 SQL 中,包含了用户数据分析 SQL 里常用的聚合分析、连接查询、表达式计算、子查询等操作,反映了数据库在并发查询、表扫描、filter 下压等方面的通用能力。OceanBase 在 TPC-H 测试中响应时间的大幅降低,体现了OceanBase 在 OLAP 方面能力的不断突破。


      从 2010 年开始立项的 OceanBase,一直是原生分布式数据库的信仰者、开拓者。我们希望能够基于“一个系统,一份数据” 为用户提供同时处理交易和实时分析的高性价比能力。 自登顶 TPC-C 榜首,OceanBase 不断稳步迈进提升 OLAP 的能力。4.0 版本 OceanBase 的实时分析能力,无论是相对 3.x 版本,还是专门的 OLAP 数据库,都有了质的飞跃。我们希望真正帮助企业解决传统 ETL 带来的数据同步延迟和业务复杂度问题,帮助用户在实际场景中能够同时兼顾到 OLTP 类的事务处理和 OLAP 类的报表分析、业务决策等实时分析能力,让数据库服务和业务应用变得简单。

      「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
      关注作者
      【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论