更新时间:2025-12-10 GMT+08:00
分享

TaurusDB内核概述

内核介绍

在企业级数据库应用中,随着业务量的增长,数据库的读写压力日益增大,传统的开源MySQL数据库在扩展性方面遇到了瓶颈,如添加只读节点时需要复制全量数据,导致扩展时间长且成本高。如何解决这一扩展性问题,同时保持高性能和低成本?

TaurusDB作为华为自研的最新一代企业级高扩展高性能云原生数据库,完全兼容MySQL,采用计算存储分离架构,最大128TB的海量存储,故障秒级切换,既拥有商业数据库的高可用和性能,又具备开源低成本效益。

产品架构

云数据库TaurusDB整体架构自下向上分为三层。

  1. 存储层: 基于华为DFV存储,提供分布式、强一致和高性能的存储能力,此层来保障数据的可靠性以及横向扩展能力,保证数据的可靠性不低于99.999999999%。DFV(Data Function Virtualization)是一个与数据库垂直整合的高性能,高可靠的分布式存储系统。存储集群采取池化部署,可以有效提升存储使用效率,构建以数据为中心的全栈数据服务架构的解决方案。
  2. 存储抽象层 (Storage Abstraction Layer):将原始数据库基于表文件的操作抽象为对应分布式存储,向下对接DFV,向上提供高效调度的数据库存储语义,是数据库高性能的核心。
  3. SQL解析层:与MySQL 8.0开源版100%兼容,客户业务从MySQL生态可以平滑迁移, 从其他数据库迁移也能使用MySQL生态的语法、工具,降低开发、学习成本。基于原生MySQL,在100%兼容的前提下进行大量内核优化以及开源加固。
图1 架构图

核心特点

TaurusDB作为云原生存算分离数据库,所有计算节点共享同一份存储数据,这是其与开源MySQL的最大区别。

具有以下核心特点:

  • 添加只读节点时,无需复制全量数据,添加节点的时间与数据量大小无关,可实现分钟级添加只读节点(预估7~10分钟),最多支持1主15只读节点。
  • 主备之间无需进行Binlog复制以同步数据,仅同步redo元数据。只读节点通过从DFV存储池中读取并回放redo log来实现数据同步。

    TaurusDB基于共享存储架构,主备之间仍需要同步redo元数据,所以会存在主备数据延迟。原理详情请参见只读落后自愈技术原理

  • 数据会自动备份到OBS上,保证数据安全。
  • 支持开启数据库代理实现读写分离,减轻主节点的读负载。
  • 支持开启全量SQL,记录所有执行过的SQL,方便问题定位。

功能概览

表1 功能概览

类别

功能

描述

并行查询

并行查询(PQ)

支持并行执行的查询方式,用以降低分析型查询场景的处理时间,满足企业级应用对查询低时延的要求。

计算下推

算子下推(NDP)

针对数据密集型查询,将提取列、聚合运算、条件过滤等操作从计算节点向下推送给TaurusDB的分布式存储层的多个节点,并行执行。

LIMIT OFFSET下推

LIMIT OFFSET下推功能是把LIMIT OFFSET下推到引擎层处理,提升查询效率。

查询优化

Statement Outline

利用 MySQL Optimizer/Index hint 来稳定执行计划的方法,称为 Statement outline。

IN谓词转子查询

通过功能优化器可以将某些大的IN谓词转换为IN子查询,从而提升复杂查询的执行性能。

反向索引扫描

可以通过反向扫描索引的方式消除排序,TaurusDB对Backward Index Scan特性增加开关,解决反向扫描与其他一些特性(例如: Index Condition Pushdown(ICP))不兼容,导致优化器选择Backward Index Scan后出现性能劣化问题。

多表连接场景下DISTINCT优化

提升多表连接下DISTINCT的查询效率,TaurusDB在执行优化器中加入了剪枝功能,可以去除不必要的扫描分支,提升查询性能。

DDL优化

并行创建索引

当数据库硬件资源空闲时,您可以通过并行创建索引功能加速DDL执行,避免阻塞后续相关的DML操作,缩短执行DDL操作的窗口期。

DDL快速超时

TaurusDB在执行ALTER TABLE、CREATE INDEX、DROP INDEX操作时,可以设置MDL等锁时间(即DDL超时时间),避免阻塞后续DML操作。

非阻塞DDL

TaurusDB提供的非阻塞DDL功能,可以保证即使在无法获得MDL-X锁的情况下,依然允许新事务进入目标表,从而保证整个业务系统的稳定。

创建二级索引进度查询

在用户关闭performance schema 之后仍可以显示高耗时创建索引操作的进度。

事务优化

主动终止空闲事务

TaurusDB支持主动终止空闲事务,可针对不同类型的事务用不同的参数进行控制,当空闲事务超时后会被自动的回滚并断开连接。

大事务检测能力

TaurusDB提供了大事务检测的能力,当出现大事务,可以通过告警通知客户及时提交。

热点行更新

TaurusDB支持热点行更新优化,您可以通过手动指定或者自动识别的方式开启热点行更新。热点行更新开启后可以大幅度提升热点行的更新性能。

分区表

二级分区

TaurusDB分区表相对于社区MySQL进行了功能增强,支持丰富的分区表类型及组合,

LIST DEFAULT HASH

LIST DEFAULT HASH是在同一级别支持两种分区类型:LIST和HASH。

INTERVAL RANGE

INTERVAL RANGE分区表是RANGE分区表的扩展,当新插入的数据超过现有分区的范围时,允许数据库根据INTERVAL子句提前指定的规则来添加新分区。

分区级MDL锁

TaurusDB实现了分区级别的MDL锁,使得分区表的锁粒度从表级降低到了分区级,不同分区上的DML和特定DDL(如增加和删除分区)在MDL锁上不会相互阻塞,从而大大提升分区间操作的并发性。

备份恢复

闪回查询

在客户数据误删除或漏洞引发数据异常、业务审计需追溯历史数据等场景下,TaurusDB支持基于Undo log的表级闪回查询功能。

Binlog管理

极速定位Binlog断点

当使用自动定位的方式从TaurusDB实例拉取Binlog时,如果未读取的Binlog文件比较多,自动定位正确Binlog位点的时间很长。特性开启后,自动定位的时间会有大幅度降低。

安全加密

动态脱敏

动态脱敏指的是当应用程序发起查询请求访问数据库时,数据库在将结果返回给客户端的过程中,对敏感数据进行脱敏处理的一种安全手段。TaurusDB动态脱敏功能通过添加脱敏规则实现指定库、表、列的数据进行脱敏。

回收站

库表回收站

TaurusDB支持库表回收站功能,删除后暂时将指定表或数据库移入“__recyclebin__”库中,并将表或数据库重命名。

多租户

多租户管理与资源隔离

TaurusDB提供的多租户管理功能,让数据库能够为其多个租户服务,提高数据库资源利用率。租户间实现数据隔离,不同租户能访问自己的数据。

其他功能

字段压缩

为了减少数据页面存储空间占用,节省成本,TaurusDB推出细粒度的字段压缩,提供ZLIB和ZSTD两种压缩算法,用户可以综合考虑压缩比和压缩解压性能影响,选择合适的压缩算法,对不频繁访问的大字段进行压缩。

备机冷数据预热

TaurusDB集群实例运行过程中,主节点监控LRU(Least Recently Used)链表,将发生活动的数据页(从存储中读取或缓存池内移动的数据页)同步给只读节点。只读节点会将相关页面提前读取到缓存池中,以提高只读节点倒换成主节点后的缓存命中率,降低倒换后的性能抖动。

只读落后自愈技术原理

节点与只读节点共享存储数据,但是主节点和只读节点之间仍需要定期通信,保证只读节点的数据缓存能够与主节点保持同步。

相关文档