当前位置: 首页 > news >正文

Doris的行列存储

Doris是一个高性能、实时的分析型数据库系统,采用多种存储模式以适应不同查询场景。其行列存储的处理策略如下:

1. 列式存储核心优势

针对分析型查询特点,默认采用列式存储:

用户表 (列存储格式) ├── user_id.bin ├── name.dict + .data ├── age.data └── last_login.compressed
  • 高压缩比:单列数据特征相似(如age的数值范围),可通过RLE字典编码等实现高压缩
  • 聚合加速:执行SELECT AVG(age)时仅需读取单列数据
  • 延迟物化WHERE age > 18筛选后再关联其他列数据

数学表达:
设查询涉及列比例 $ \frac{k}{n} $,行存储扫描成本 $ O(m) $,列存储理论扫描成本 $ O(\frac{k}{n} \times m) $

2. 行存优化点查询

为优化主键查询(如SELECT * FROM users WHERE user_id = 1001),提供行式存储格式:

# 行存储结构示例 Row: user_id: 1001 (4B) name: "张三" (UTF8, 6B) age: 28 (1B) last_login: 1698765432 (4B) # 总行大小 ≈ 15B
  • 点查优势:通过主键索引直接定位整行数据,减少磁盘随机I/O
  • 数据局部性:适合LIMIT 10等少量行返回场景

3. 自适应存储选择

根据业务场景智能选择:

存储类型适用场景示例查询
列存全表扫描/聚合SELECT SUM(sales) FROM fact
行存主键查询/小范围扫描SELECT * FROM orders WHERE id IN (1001,1002)
混存混合负载时间字段行存 + 指标字段列存

最佳实践

  • 时间序列数据:将timestamp设为行存,数值指标设为列存
  • 压缩算法配置:
    $$ \text{压缩比} = \frac{\text{原始数据量}}{\text{压缩后数据量}} $$ 对字典字段(如city)启用字典编码,可达 $10:1$ 压缩比

通过灵活存储策略,可在以下场景获得显著性能提升:

-- 列存优势场景:大数据量聚合 SELECT region, SUM(revenue) FROM sales WHERE year = 2023 GROUP BY region; -- 行存优势场景:主键+多列获取 SELECT product_name, price, stock FROM products WHERE product_id = 1005;
http://www.jsqmd.com/news/1104509/

相关文章:

  • openeuler/easybox核心命令手册:find/grep/mount等27个工具使用教程
  • 公章遗失登报怎么办理?公章遗失登报费用
  • utcpio错误处理与调试:5个常见问题终极解决方案指南
  • openeuler/skills系统技能详解:RAG技术在智能代理中的应用实践
  • OpenDesign Components 版本发布指南:从开发到上线的完整流程
  • XSS纵深防御实战:从输入净化到CSP的五层安全架构
  • Kiran Session Guard 与 LightDM 集成实战:打造无缝桌面登录体验
  • openeuler/skills场景技能实战:ag_skill与log-gpt插件开发教程
  • 如何快速上手openEuler HPC Runner?5分钟完成你的第一个HPC应用部署
  • nestos-installer实战教程:如何自动化安装NestOS系统
  • 如何用utcpio创建和管理归档文件:完整操作指南
  • utcpio集成实践:如何在自动化脚本中高效使用归档工具
  • Storprototrace开发者手册:API接口设计与二次开发指南
  • Kiran-cc-daemon深度解析:揭秘麒麟桌面控制中心后端架构与核心功能
  • openEuler Docker镜像构建实战:容器化部署的最佳实践指南
  • 飞腾E2000系列开发板实战:phytium-kernel编译、烧录与启动完整教程
  • witty-profiler Rust版本前瞻:高性能嵌入式运行时开发指南
  • 监控与告警:构建NVMe-snsd健康状态监控系统的完整指南
  • Storprototrace与OpenEuler生态集成:国产操作系统存储监控解决方案
  • Java代码审计实战:深入剖析SQL注入漏洞的成因、检测与防御
  • Ketones无缝兼容BCC:现有工具迁移的简单步骤与最佳实践
  • Linux命令行新革命:openeuler/easybox如何用Rust重写20+核心工具?
  • BetterNCM安装器完整指南:三步解锁网易云音乐隐藏功能
  • DayZ单机模式终极指南:打造属于你的末日沙盒实验室
  • 终极utwget入门指南:从安装到批量下载的完整教程
  • 3个实用场景,快速掌握Spek音频频谱分析器
  • openEuler RISC-V SIG:5步快速开始为RISC-V构建openEuler软件包的终极教程
  • CSRF漏洞防御全解析:从原理到实战的Web安全必修课
  • Eggo GitOps模式详解:使用集群管理集群的先进实践
  • Fast-GitHub终极指南:如何让国内GitHub下载速度飙升10倍以上