哈希游戏海量数据分页查询效率低?一文解析阿里云AnalyticDB深分页优化方案
哈希游戏作为一种新兴的区块链应用,它巧妙地结合了加密技术与娱乐,为玩家提供了全新的体验。万达哈希平台凭借其独特的彩票玩法和创新的哈希算法,公平公正-方便快捷!万达哈希,哈希游戏平台,哈希娱乐,哈希游戏海量数据分页查询效率低?一文解析阿里云AnalyticDB深分页优化方案
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和 《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
本文介绍了AnalyticDB(简称ADB)针对深分页问题的优化方案。深分页是指从海量数据中获取靠后页码的数据,常导致性能下降。ADB通过快照缓存技术解决此问题:首次查询生成结果集快照并缓存,后续分页请求直接读取缓存数据。该方案在数据导出、全量结果分页展示及业务报表并发控制等场景下表现出色。测试结果显示,相比普通分页查询,开启深分页优化后查询RT提升102倍,CPU使用率显著降低,峰值内存减少至原方案的几分之一。实际应用中,某互联网金融客户典型慢查询从30秒优化至0.5秒,性能提升60+倍。
在企业的实际应用中,深分页是一种常见的高成本查询场景,通常指用户需要从海量数据结果集中获取靠后页码(如1000页之后)的数据,随之而来的是I/O开销激增、查询延迟显著上升等性能问题。比如在电商商品查找场景中,通常按销量、评分等排序,使用户能快速找到优质商品。为避免一次性加载过多数据导致卡顿,应用端常采用分页展示。
常规做法是按照所需列进行排序后利用 limit + offset 实现,这样的查询称为分页查询,其中 limit 为每页需要展示的数据条数,offset 为每页数据的起始偏移。若系统每页展示 100 条数据,那么查询第 1 页的 SQL 为:
当请求的分页较深时,全局排序开销和频繁的回表开销会导致数据库性能急剧下降,这样的问题称为深分页问题,比如上面例子中查询第 10001 页的数据。
在云原生数据仓库AnalyticDB MySQL(以下简称ADB)这样的分布式数据库下会更复杂。为了减少不同节点间 shuffle 的数据量,往往每个 worker (存储数据的节点) 会先在本地做一次 TopN 计算,再由单节点对每个 worker 的执行结果进行聚合,排序后产生最终的结果集返回。
所以为了保证最终的正确性,需要对 SQL 语句进行改写交给每个 worker 执行。例如,查询第 10001 页,每个 worker 收到的查询为:
原本只要 100 条数据,最后却要由单节点对 1000100 × worker数 条数据进行全局排序,排序的数据量随分页深度线性增长,性能也会急剧下降。同时不落盘的情况下排序完全基于内存进行,极大增加了 OOM 风险。
在做数据导出时,一次性读取过多数据容易造成客户端不稳定,所以往往会通过分页查询的方式分批拉取结果,这也是在 ADB 深分页的绝大多数场景。
由于在分布式环境下,直接使用 limit offset 的方式并不会保证数据以确定的顺序被处理,意味着同一页数据每次查询时可能会返回不同的结果,所以需要通过显式增加 order by 来保证数据导出时的不重不漏。
多个用户并发查询同一张报表时,以往实现的是每个请求都独立发起查询,这样不仅会增加集群负载,还可能导致数据一致性问题。
通过本优化,可以达到一段时间窗口内全局一个query的效果,显著提升查询性能和集群稳定性。
从上述场景和用户痛点出发,ADB对深分页进行专项优化,解决深分页查询的性能问题。主要思想是基于快照缓存。首次查询时会生成并缓存查询去掉 limit offset 后的结果集的快照,在元数据表中维护缓存的相关信息,通过 id 标识,以下称为 paging_id。
后续每次分页请求会通过 SQL 计算出 paging_id,找到对应快照数据,批量拉取结果。使用深分页优化后并不保证缓存数据与原始数据的强一致性。
a.ADB 接收到带深分页优化 hint 的分页查询,解析并进行必要检查(如是否包含 limit offset),若不符合要求则报错。
b.解析分页SQL,去掉 limit offset 后根据 pattern 计算哈希生成 paging_id,检查元数据表中是否存在对应分页缓存。若无缓存,则进入“创建分页缓存模式”;若有,则进入“查询分页缓存模式”。
c.创建分页缓存模式:服务端内部会执行分页SQL 去掉外层 limit offset 的部分,并生成数据快照缓存下来,整个过程异步执行,产生的缓存文件会同步到cache file meta表中。
d.查询分页缓存模式:根据 paging_id 查找分页缓存元数据,检查通过后定位对应缓存文件及所在节点,下发任务读取数据。若数据仍在准备中,查询将进入阻塞。
根据过期时间淘汰:统计的是最后一次被访问的时间间隔,默认为 10 分钟,当某个分页缓存在该时间间隔内没有被访问,则会被自动删除。
分页缓存支持设置缓存有效时间。超过有效时间后,缓存失效,后续同一Pattern的查询会重新访问数据库查询数据,并更新缓存表,通常应用在报表并发控制场景中。
深分页的代价根源是结果集全局排序,ADB 针对这一点进行了优化,以下面简单的例子进行分析:
每次都需要在每个存储数据的节点上查询排在最前面的 offset + 100 条数据,然后由单节点负责收集,将节点数 × (offset + 100) 条数据聚合起来进行一次全局排序,取最终的从 offset 开始的 100 条数据。这个过程中每个worker都要对本地存储的数据进行多次排序计算【如上图红色虚线框所示】,且最后全局排序的数据量与offset线性相关【如上图红色实线框所示】。
创建分页缓存阶段会在每个节点上查询分页SQL 去掉 limit offset 部分的所有数据,后续分页查询会根据 limit 和 offset 按一致的确定顺序读取缓存数据。【数据导出场景示意图如上所示】
相比普通分页查询,开启深分页优化后,对于数据导出场景,会优化掉不必要的 order by,执行效率和资源消耗会大幅降低;对于全量结果按需展示场景,也只存在一次全局排序,且每个分片只查询了一次。
基于TPCH 100G对数据导出场景的优化收益进行评估,测试集群包含6个worker,导出数据 100w 条,每页 10w 条数据。
普通分页查询各个指标都会随着分页深度的增加基本呈线性增长,因为存在一个全局排序,offset 越大,最后全局排序的数据量就越大。
开启深分页优化后,rt只有在缓存生成阶段会有明显延迟,延迟与单个文件大小相关;由于优化掉了 order by,最终的cpu使用率与峰值内存均较低。
单并发执行,整个导出过程普通分页查询平均RT为54391ms,开启深分页优化后平均RT在525ms,性能提升102x。
使用普通分页CPU使用率在80%左右;开启深分页优化后,缓存生成过程最大CPU使用率在20%左右,后续分页CPU使用率极低。
使用普通分页峰值内存随着分页深度基本呈线G;开启深分页优化后,峰值内存大大降低,缓存生成过程中内存使用最高,仅为584M。4. 总结
AnalyticDB深分页产品化解决方案,从用户痛点出发,相较于普通的分页查询,我们做到了:
在数据导出场景下脱掉了不必要的order by,解决利用深分页导出时的 OOM 问题。
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品
近日,通义千问Qwen3系列模型已开源,其技术报告也正式发布。Qwen3系列包含密集模型和混合专家(MoE)模型,参数规模从0.6B到235B不等。该模型引入了“思考模式”与“非思考模式”的动态切换机制,并采用思考预算机制优化推理性能。Qwen3支持119种语言及方言,较前代显著提升多语言能力,在多个基准测试中表现领先。此外,通过强到弱蒸馏技术,轻量级模型性能优异,且计算资源需求更低。所有Qwen3模型均采用Apache 2.0协议开源,便于社区开发与应用。
本文探讨了人类偏好建模的可扩展性,揭示其遵循Scaling Law。通过大规模训练(1.5B-72B参数)Qwen 2.5模型,使用1500万对论坛偏好数据,发现测试损失随规模指数增长而线性下降。研究提出WorldPM(Modeling World Preference),作为统一的人类偏好表征方法,在客观与主观评估中展现优势。实验表明,WorldPM可显著提升样本效率和多维度性能,成为高效的人类偏好微调基座。同时,文章反思主观评估复杂性,建议放弃简单预设,让模型自主发现人类偏好的深层规律,推动AI对齐新方向。论文与代码已开源。
阿里云ECS与轻量应用服务器对比:ECS适合企业专业场景,功能强大、配置灵活;轻量应用服务器基于ECS简化而来,面向个人开发者,适用于低访问量网站或学习测试,操作简单、成本低。两者在适用人群、使用场景、计费方式、网络带宽等方面各有差异,用户可根据需求选择。如需简易管理与低成本,选轻量应用服务器;追求高性能与复杂业务支持,则云服务器ECS更优。
Quick BI是阿里云推出的一款零代码+AI数据分析工具,专为业务人员设计。通过简洁的界面和强大的功能,它让数据“开口说话”。从Excel秒变智能资产,到拖拽式构建高定看板,再到自然语言查询与预测分析,菜鸟也能轻松上手。企业微信集成、移动端优化等功能,助力实时决策。Quick BI打破技术壁垒,推动数据民主化,让每个岗位都能用业务语言对话数据,实现真正的数据驱动转型。
今天来教大家如何用阿里云百炼平台和开源工具 Open WebUI,零门槛(甚至零成本)、即刻拥有 DeepSeek-R1 满血版!全程无需复杂代码,跟着我做就能拥有企业级 AI 服务!我只花了不到半小时就完成了整个服务的部署。
用通义灵码开发一个Python时钟:手把手体验AI程序员加持下的智能编码
通义灵码是基于通义大模型的AI研发辅助工具,提供代码智能生成、研发问答、多文件修改等功能,帮助开发者提高编码效率。本文通过手把手教程,使用通义灵码开发一个简单的Python时钟程序,展示其高效、智能的编码体验。从环境准备到代码优化,通义灵码显著降低了开发门槛,提升了开发效率,适合新手和资深开发者。最终,你将体验到AI加持下的便捷与强大功能。
产品测评 感受操作系统智能助手OS Copilot新功能带来的运维效率飞升
近期,我再次评测了阿里云OS Copilot的新版本,发现其在命令执行、任务自动化、文件处理及知识问答等方面表现出色,特别是-t参数显著提升了70%的效率。使用过程中,我发现它不仅简化了复杂任务的处理,还提供了中文解释配置文件的功能,极大地方便了初学者。总结来看,OS Copilot极大地提升了Linux运维效率,但仍需在自然语言理解、用户界面优化和错误处理机制等方面进一步改进。未来若能支持更多操作系统并集成更多实用工具,必将成为Linux用户的得力助手。
4年10亿美金,Neon用Serverless PG证明:AI需要的不是“大”,而是“隐形”
6/14 上海,Apache Doris x 阿里云 SelectDB AI 主题线下 Meetup 正式开启报名!
解锁数仓内AI流水线,AnalyticDB Ray基于多模ETL+ML提效开发与运维
客户说|宝宝树选用AnalyticDB RAG引擎,共创智能母婴生活新范式
解锁数仓内AI流水线,AnalyticDB Ray基于多模ETL+ML提效开发与运维
海量数据分页查询效率低?一文解析阿里云AnalyticDB深分页优化方案
6/14 上海,Apache Doris x 阿里云 SelectDB AI 主题线下 Meetup 正式开启报名!
4年10亿美金,Neon用Serverless PG证明:AI需要的不是“大”,而是“隐形”
光云科技 X AnalyticDB:构建 AI 时代下的云原生企业级数仓
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
体验AnalyticDB无感集成(Zero-ETL)下的一站式数据分析,完成任务可领取300社区积分兑换各种商城好礼!