OceanBase 列存中多列过滤性能解析

今天有同事问我,列存大宽表场景下,如果在多个列上有等值过滤条件,OceanBase 的性能是不是无法满足要求?

Hi 晓楚,帮评估个OTS替换场景 大概1亿大宽表,查询姿势就是任意字段的组合,进行等值查询+group by/sum这些聚合操作,业务模型大概是这样1亿表,过滤性最强的字段会扫50万左右数据,单SQL OTS现在不超过300毫秒,这个场景能搞定不?主要也要求OB几百毫秒,我还有个疑问,这种场景是不是没有索引合并的能力耗时很难满足业务要求呢?
.
典型 SQL 如下:
200+字段的大宽表,sql大概就是 select sum(xx),count(*) from tb where a = ? and b = ? and c = ? group by d / order by d limit 20 类似这种

答案是:OceanBase 可以轻松搞定这种场景!

OceanBase 列存表是如何处理 a = ? and b = ? and c = ? 这种多个等值条件的扫描呢?

按照一般的思路,我们会将这三个表达式下压到存储层。存储层需要先按照 a = ? 扫描出所有结果行,得到第一组rowid,然后按照 b = ? 扫描出所有结果行,得到第二组rowid,最后按照 c = ? 扫描出所有结果行,得到第三组rowid,然后把这三组 rowid 求交集,得到最终结果。

这个思路并没有什么问题,在最坏的情况下我们就是这么做的。因为只需要扫描三列,一般是可以做得非常快的。1亿行,百毫秒级绰绰有余。

但实际上,OceanBase 存储层做了更多优化。比如,首先做 a = ? 扫描的时候,就可以快速知道哪些微块上根本没有满足条件的数据,那么在处理 b = ?c = ? 时就可以快速跳过这样的微块。

再比如,在先计算哪个条件的选择上,可以选择过滤性最好的条件先做,这样就可以跳过更多的微块。

还比如,过滤性不确定的情况下,还可以动态地选择三个表达式中的一个来做,做一段时间发现过滤性不好,就换另一个表达式。这样动态切换,可以让计算过程具备更好的自适应能力。

对于 OceanBase 来说, a = ? and b = ? and c = ? 是最好处理的场景了,实际场景可以比这个复杂得多,比如还有 or 条件的时候应该怎么处理?这些 OceanBase 都有相应的优化策略。

基于存储层的这些优化,我们在 5000万行的数据集下做了一些简单测试,结果如下:

在这里插入图片描述

可以看到,在两个过滤条件的场景下,5000万行的表,只需要 50 毫秒即可过滤出结果。由此推算,1亿行的场景,也一定可以满足客户对延迟的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/726398.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【扫雷游戏】C语言教程

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

办公人必备宝藏网站,提升工作效率!

对于每个办公人来说,如何在繁杂的工作中保持高效,是每位职场人士追求的目标。其中,高效的工具和资源可以极大地提升我们的工作效率。下面小编就来和大家分享一些办公人必备的宝藏网站,提升大家的工作效率。 1. 办公人导航 办公人…

突破客户关系,客服的新战略与实践

互联网和信息技术的快速发展,让客服服务的内涵和外延也在不断变化,以客户为中心的服务理念,已经成为行业共识。有研究显示,目前有70%-80%的企业在发展战略中都提到了客户关系。 客户关系更多是一种动态的过程,是企业…

更换域名流程记录

华为云的服务器,阿里云购买的域名。 1.购买域名 2.在域名服务商绑定服务器ip(以阿里云为例) 控制台->域名控制台->域名列表->点击域名->域名解析->添加记录 记录类型填A , 主机记录“”或“www”,记录值填服务器i…

Python+appium 自动化测试-Android 端环境配置

一、安装配置 JDK 一、安装环境 1、本机系统:Windows 10(64 位) 2、JDK 版本:1.8(64 位) 二、下载安装 1、JDK 和 JRE 简介 Java 环境分 JDK 和 JRE ,JDK 就是 Java Development Kit。简单…

Day6—热点搜索词统计

一、要求 根据用户上网的搜索记录对每天的热点搜索词进行统计,以了解用户所关心的热点话题。 要求完成:统计每天搜索数量前3名的搜索词(同一天中同一用户多次搜索同一个搜索词视为1次)。 二、数据 三、配置scala环境 1.下载sca…

微信小程序端在线客服源码系统 聊天记录实时保存 带完整的安装代码包以及搭建教程

系统概述 在当今数字化时代,客户服务的质量和效率成为企业竞争的关键因素之一。微信小程序作为一种便捷的应用形式,为在线客服提供了广阔的平台。而具备聊天记录实时保存功能的微信小程序端在线客服源码系统,则能够更好地满足企业与客户之间…

你用AI作画工具生成过哪些惊艳、令人拍案叫绝的作品?

在水墨的基础上追加了一些水彩润色,大家多提提建议,喜欢的话我就定期追加各种全新融合的水墨风格。 应评论区要求,更新了一些横屏的供大家作壁纸用,同时更换了一组新合成的更适合这个风格的模型。 目前为止,Stable D…

idea插件开发之在项目右键添加菜单

写在前面 本文看下如何在右键列表中增加菜单。 正戏 首先创建一个Action,要显示的menu选择ProjectViewPopupMenu,如下: action public class CAction extends AnAction {Overridepublic void actionPerformed(AnActionEvent e) { // …

一分钟生成论文全文,这款AI论文神器你不会还不知道吧?

毕业季写论文就选范文喵AI论文助手。范文喵V2.0主要包括了论文范文、选题分析、开题报告、任务书的写作、以及论文答辩PPT、论文解读等功能。此外,我们也会在近期进一步优化范文喵论文助手,写作效果更好的V3.0版本预计将于今年7月份和大家见面&#xff0…

Python——Flask开发框架基础使用介绍

目录 Flask简介 安装 Flask 创建一个简单的 Flask 应用 运行你的Flask应用 添加模板和静态文件 使用静态文件 处理表单和数据 使用 Flask 扩展 结论 Flask简介 Flask 是一个轻量级的 Python Web 框架,它以其简洁和灵活的特点广受欢迎。Flask 让开发者能够快…

leaflet,canvas渲染目标,可加载大批量数据

基于Leaflet-CanvasMarker: 在Canvas上绘制Marker,而不是每个marker插件一个dom节点,极大地提高了渲染效率。主要代码参考自 https://github.com/eJuke/Leaflet.Canvas-Markers,不过此插件有些Bug,github国内不方便,作者也不维护了&#xff0…

小学生杂志小学生杂志社小学生编辑部2024年第5期目录

教学研究 小学数学教学中易错题的纠正策略研究 黄喜军; 1-3 主题语境下小学英语作业多模态设计与实施策略研究 韩蓓; 4-6 小学美术教育中色彩教学的实施措施研究 顾雅洁; 7-9《小学生》投稿:cn7kantougao163.com 核心素养视域下小学英语单元整体教学…

Linux:配置本地yum源仓库

目录 一、挂载光盘到目录下 二、配置本地yum源仓库 一、挂载光盘到目录下 mount /dev/cdrom /mnt/ #把光盘挂载到/mnt目录下 挂载 设备 目录或文件夹 注:最好是空的 原来的数据将被隐藏一个挂载点同一时只能挂载一个设备。 mount /dev…

数据中心网络自动化不断发展

评估数据中心自动化的状况 随着数据中心变得越来越复杂,网络自动化对大多数企业来说愈发重要。因此,寻找一种更灵活、更高效的运营方式应该成为每个公司的首要任务。然而,即使是那些可能从自动化中受益的实体企业——例如通信服务提供商&…

Spring(核心概念:IoC/DI思想)

目录 一、引言 (1)如今的代码书写现状 1、业务层 2、数据层 3、假如当项目上线发布之后,想把数据层的实现换一下 二、核心概念 (1)IoC( Inversion of Control ) 控制反转 (2)…

【开源】AigoTools —— 自动收录网站的导航站模板

在管理导航站点时,我们常常面临各种挑战:手动创建和更新站点信息费时费力,国际化需求,SEO 优化难以实施,以及图片存储方案不够灵活。针对这些问题,我们推出了 AigoTools,让导航站点管理变得更加…

【vue scrollTo 数据无限滚动 】

vue数据无限滚动 参考来源 Vue3 实现消息无限滚动的新思路 —— 林三心不学挖掘机 vue3代码 <template><div class"scroll-container" ref"scrollRef"><div v-for"(item, index) in list" :key"index" style"hei…

AD域离线破解新思路:Trustroasting和TimeRoasting

简介 近期Tom Tervoort发表了白皮书《TIMEROASTING, TRUSTROASTING AND COMPUTER SPRAYING》并在Github发布了名为Timeroast的工具包&#xff0c;其中介绍了几种新的攻击思路TimeRoasting、Trustroasting和计算机账户密码喷洒&#xff0c;本篇文章主要对TimeRoasting和Trustro…

Appium:Appium-Python-Client与Selenium版本不兼容导致的问题

一、问题描述 在执行python代码过程中&#xff0c;出现了以下错误&#xff1a; 错误一&#xff1a;No module named appium.webdriver.common.touch_action Traceback (most recent call last):File "d:\xxx\index.py", line 3, in <module> ModuleNotFound…