当前MySQL依然是大多数企业使用的主流数据库,但很多企业从传统企业架构转移到云原生架构,面临如何在保障数据的前提下,完成在不同的运行环境进行灵活迁移的难题。同时,大多数使用数据库的传统企业客户不只包括商业企业,还涉及事业单位,他们对于企业级系统和平台要求颇高。
因此,兼容MySQL的工作一直是 OceanBase 团队长期工作的重点。就拿OceanBase 4.1来说,作为兼容性过程中的一次重大里程碑式的版本,随着 MySQL 的发展和用户使用需求的变化,OceanBase 的 MySQL 兼容版本也从 5.6 发展到 5.7 再到 8.0。通过技术迭代和实战检验,能够更好地满足高安全、高性能、高可靠性、高可用性、高开发效率、低维护成本、高可扩展性等企业需求。
兼容 MySQL 能力全面开放,带来更强大的数据管理能力
据了解,目前MySQL 8.0 最重要的新增功能特性有五项,分别是窗口函数、公用表表达式、Hash Join、索引管理、资源管理。其中OceanBase 4.1版本主要支持窗口函数、公用表表达式、Hash Join、资源管理,由于过去用户对逆序索引需求较少,OceanBase 目前暂不支持逆序索引功能。
在窗口函数方面,OceanBase 从 1.x 版本开始就提供了窗口函数功能。相比使用子查询或连接操作,窗口函数往往能提供更好的性能。同时,数据库优化器可以有效地处理窗口函数,降低查询计算的成本。值得一提的是,即使用户在 SQL 编写中没有使用窗口函数,在部分场景中,ceanBase 也会将部分 SQL 自动改写为包含窗口函数的语句,以提高数据管理性能。
在公用表表达式方面,OceanBase 可以自动识别公共子查询,并抽取为公共表表达式。OceanBase 从 2.0 版本开始支持 CTE 功能,即使用户在 SQL 编写中未使用 CTE,OceanBase 也会在改写阶段进行识别并抽取,通过减少子查询执行次数以优化性能。举例来说,在如下 SQL 和计划中,子查询用了两次,便可抽取成为公共子查询。
支持 Hash Join和资源管理,提高数据管理效率
此外,OceanBase 一直以来都支持 Hash Join 算法。与单机数据库不同,OceanBase 面向的应用场景很多都涉及海量数据处理。此外,分布式场景下索引(全局)往往需要跨机访问,而通过建索引优化 Nested Loop Join 较难达到预期效果。而 Hash Join 在分布式、大数据量场景通常性能表现更优,因此我们从研发初期就进行了支持。同时,我们也支持 Nested Loop Join 以及 Merge Join,这两个 Join 算法在能利用索引或利用序的场景有性能优势。
同时OceanBase 支持更丰富的资源管理策略。从 3.x 版本开始,OceanBase 在 Oracle 模式中支持了 Oracle 的资源管理(DBMS_RESOURCE_MANAGER 包),与 MySQL 的 resource management 主要针对 CPU 资源分配不同,OceanBase 提供了丰富、灵活的资源管理策略,可以设置多种不同的资源计划,根据消耗情况动态调整资源分配,具备更完备的功能和更多的定制可能性。
据了解,OceanBase 也在 3.2 和 4.1 版本中,将资源管理能力开放到了 OceanBase MySQL 模式。OceanBase 资源管理与 MySQL 8.0 资源管理的异同如下:
总的来说,相对于前代版本,OceanBase 4.1版本在功能和性能上均有长足的进步,能够兼容MySQL大多数功能,在兼容性体验和数据安全优化层面都登上了新台阶,能够真正让科技普惠更多的金融机构和合作伙伴。
领取专属 10元无门槛券
私享最新 技术干货