《云原生一站式数据库技术与实践》——二、云原生数据仓库AnalyticDB MySQL高性能存储引擎(5)

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 《云原生一站式数据库技术与实践》——二、云原生数据仓库AnalyticDB MySQL高性能存储引擎(5)

《云原生一站式数据库技术与实践》——二、云原生数据仓库AnalyticDB MySQL高性能存储引擎(4) https://developer.aliyun.com/article/1231656?groupCode=aliyundb



数据版本管理与build 紧密联系,基本基于build 来实现。


实时数仓的一个典型使用场景为从TP 库同步数据到AP 库,用户希望TP 库的所有数据更新都能实时的在AP 库上得到体现。现在假设一个场景:用户在TP 库上执行了一条DDL,该DDL在TP 可能耗时数十分钟。其后立即更新了大量数据并期望AP侧能够立即对这些数据进行查询。在该场景下要求DDL能够在AP 侧做到准实时或毫秒级执行。



基于以上需求,我们首先进行了毫秒级的逻辑适配。逻辑适配完成之后,存储引擎可以接收新模式下的写入和查询请求,此时数据并没有得到物理上的修改。之后再通过build 过程,对数据文件依据DDL进行真实的物理变更。执行时,若将全量数据进行重建会消耗大量时间以及资源,因此仅对有修改的分区进行重建。同时,为了满足客户不同的业务场景,也支持用户通过force partition 指定重建区分区。分区管理主要包括生命周期管理以及冷热分区转化。



见上图右侧在shard1 的定义里,lifecycle=3表示有三个分区,hot window=2 表示有两个热分区。v100 里有7-31、7-30、7-29 三天的数据,其中7-29 的为冷数据。8-1 的实时数据写入后,执行build,将7-29 的数据淘汰,产生8-1 的新的历史数据。同时,要进行冷热转换,将7-30 的数据从热数据转换为冷数据。


转换完成之后,为了进一步保证主从副本的一致性,leader做完裁决之后会将裁决信息作为layout file 传到之上,从副本进行apply,在复用了build 的结果的同时也复用了整体分区管理的决策。


image.png



冷热的转化本质是分区的存储介质变化。本地存储介质一般为ESSD,上传后一般为OSS。数据从本地到DFS 并不是仅进行简单的上传即可进行高效的查询。针对远程数据文件的管理,我们也做了一系列的优化。



如上图左侧所示,上层为存储引擎,下层为DFS。从存储引擎到DFS,首先会经过SSD Buffer。DFS 对小文件的读写并不友好,比如常见的索引构建有很多类似于外排的操作涉及大量的随机读写。若此类操作直接打穿到DFS 上,则导致IOPS 非常高,对DFS 非常不友好。因此,我们实现了SSD Buffer,先在本地聚合,将需要预处理的数据在本地完构建。之后,将随机的小文件读写转换成流式的、批量的、高吞吐的顺序写上传到DFS。



写的过程中,会经过Tar FileSystem 进行打包并增加一个cache,该cache 为tar文件内子文件路径到该文件在tar 内的位置的映射。Index 置于文件尾部,一旦打开文件则会将Index 加载到cache中。cache的优势在于,在打开某个子文件时,可以少读一次元信息,同时,使得Meta 类的操作不需要再读远程,而是可以直接在本地处理,对文件的meta 类操作性能有显著提升。



下面的ADB FileSystem Interface 是统一的文件接口层,能够屏蔽下层存储的远程实现。存储引擎只感知通用文件接口,ADB FileSystem Interface会进行具体转换自适应的操作远程文件存储或对象存储。



读取时,经过Tar FileSystem 和ADB FileSystem Interface,会有SSD Cache,做了本地文件块到远程文件的映射,能够深度感知IO 模型,IO 模型可以分为三类:


第一类,Meta 类操作,比如获取block位置信息等导致的随机读。


第二类,Query,分为index search(随机读)和data cursor(高吞吐的数据扫描)。


第三类,build,高吞吐的顺序读。


SSD Cache针对以上三种类型分别分配了独立的cache,主要包括独立的磁盘空间管理、独立的淘汰队列、独立的block size,彼此互不干扰。引擎侧向下发query 时,会携带hint 信息,用于判断应该使用哪种cache。



如果发生了cache miss,会先经过Perfetch Service,它与IO 模型紧密相连,能够感知query 的plan,可以并发地进行预取,进一步加快对远程文件的读取性能。



内存控制主要防止query 过于复杂,导致查询负载较高,最终导致整体存储节点的

负载过高。

相关实践学习
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
存储 缓存 Cloud Native
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
|
7月前
|
人工智能 关系型数据库 OLAP
光云科技 X AnalyticDB:构建 AI 时代下的云原生企业级数仓
AnalyticDB承载了光云海量数据的实时在线分析,为各个业务线的商家提供了丝滑的数据服务,实时物化视图、租户资源隔离、冷热分离等企业级特性,很好的解决了SaaS场景下的业务痛点,也平衡了成本。同时也基于通义+AnalyticDB研发了企业级智能客服、智能导购等行业解决方案,借助大模型和云计算为商家赋能。
598 17
|
5月前
|
监控 关系型数据库 MySQL
DTS实时同步进阶:MySQL到AnalyticDB毫秒级ETL管道搭建
本方案采用“Binlog解析-数据清洗-批量写入”三级流水线架构,实现MySQL到AnalyticDB的高效同步。通过状态机解析、内存格式转换与向量化写入技术,保障毫秒级延迟(P99<300ms)、50万+ TPS吞吐及99.99%数据一致性,支持高并发、低延迟的数据实时处理场景。
172 10
|
6月前
|
存储 SQL 关系型数据库
MySQL存储引擎简介
在选择相应的存储引擎时,需要充分考虑实际业务场景、性能需求和数据一致性要求,从而为数据管理提供最佳支持。
379 17
|
11月前
|
存储 缓存 关系型数据库
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL的存储引擎是其核心组件之一,负责数据的存储、索引和检索。不同的存储引擎具有不同的功能和特性,可以根据业务需求 选择合适的引擎。本文详细介绍了MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案。
1921 57
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
|
8月前
|
存储 关系型数据库 MySQL
MYSQL支持的存储引擎有哪些, 有什么区别
MYSQL存储引擎有很多, 常用的就二种 : MyISAM和InnerDB , 者两种存储引擎的区别 ; ● MyISAM支持256TB的数据存储 , InnerDB只支持64TB的数据存储 ● MyISAM 不支持事务 , InnerDB支持事务 ● MyISAM 不支持外键 , InnerDB支持外键
|
10月前
|
人工智能 关系型数据库 MySQL
AnalyticDB MySQL版:云原生离在线一体化数据仓库支持实时业务决策
AnalyticDB MySQL版是阿里云推出的云原生离在线一体化数据仓库,支持实时业务决策。产品定位为兼具数据库应用性和大数据处理能力的数仓,适用于大规模数据分析场景。核心技术包括混合负载、异构加速、智能弹性与硬件优化及AI集成,支持流批一体架构和物化视图等功能,帮助用户实现高效、低成本的数据处理与分析。通过存算分离和智能调度,AnalyticDB MySQL可在复杂查询和突发流量下提供卓越性能,并结合AI技术提升数据价值挖掘能力。
275 16
|
11月前
|
存储 关系型数据库 MySQL
MySQL存储引擎详述:InnoDB为何胜出?
MySQL 是最流行的开源关系型数据库之一,其存储引擎设计是其高效灵活的关键。InnoDB 作为默认存储引擎,支持事务、行级锁和外键约束,适用于高并发读写和数据完整性要求高的场景;而 MyISAM 不支持事务,适合读密集且对事务要求不高的应用。根据不同需求选择合适的存储引擎至关重要,官方推荐大多数场景使用 InnoDB。
440 7
|
存储 SQL 关系型数据库
MySQL存储引擎
本文介绍了数据库优化的多个方面,包括选择合适的存储引擎、字段定义原则、避免使用外键和触发器、大文件存储策略、表拆分及字段冗余处理等。强调了从业务层面进行优化的重要性,如通过活动设计减少外部接口调用,以及在高并发场景下的流量控制与预处理措施。文章还提供了具体的SQL优化技巧和表结构优化建议,旨在提高数据库性能和可维护性。
371 1
MySQL存储引擎
|
存储 缓存 关系型数据库
【赵渝强老师】MySQL的MyISAM存储引擎
在MySQL5.1版本之前,默认存储引擎为MyISAM。MyISAM管理非事务表,提供高速存储和检索,支持全文搜索。其特点包括不支持事务、表级锁定、读写互阻、仅缓存索引等。适用于读多、写少且对一致性要求不高的场景。示例代码展示了MyISAM存储引擎的基本操作。
136 1

热门文章

最新文章

相关产品

  • 云原生数据仓库AnalyticDB MySQL版
  • 推荐镜像

    更多