【金仓数据库征文】列存一定比行存快?我用 200 万行数据,测出了相反的结论

发布时间:2026/7/20 20:26:24

【金仓数据库征文】列存一定比行存快?我用 200 万行数据,测出了相反的结论
一、一个人人都「知道」的常识OLTP 用行存OLAP 用列存。这几乎是数据库领域的标准答案。列式存储把同一列的数据连续存放分析查询只读需要的列压缩率高扫描快所以列存适合分析成了一句不假思索就能说出口的常识。金仓KingbaseES内置了cstore_fdw列存扩展。我本来想写一篇列存让分析查询快 N 倍的常规评测老老实实造了 200 万行数据行存列存各来一份跑一轮 OLAP 查询。结果直接把我的预期掀翻了。列存不但没快反而全面更慢。这篇文章就是这个反直觉结果的完整实录以及它背后那个比列存快更值得记住的道理。二、公平的擂台为了对比公平我造了一张典型的销售事实表9 列的宽表日期、区域、品类、金额、数量、成本、折扣这些灌入 200 万行数据然后用完全相同的数据建两种存储。sales_row是行存heap金仓默认的存储方式。sales_col是cstore_fdw列存带 pglz 压缩。同样的 200 万行同样的 9 列同样的机器。擂台搭好开打。三、第一回合存储列存赢得毫无悬念先看存储体积这是列存理论上的强项。行存sales_row占 173MB列存sales_col只占 23MB。压缩比约 7.5 比 1列存省下了 87% 的空间。这个结果完全符合预期。列式存储把同类型数据连续排列pglz 能吃到极高的压缩率。同样一批历史数据列存能少占一个数量级的磁盘。第一回合列存干净利落地赢下。四、第二回合查询剧本反转了带着存储都省这么多、查询肯定也快的预期我跑了三类典型的分析查询。查询类型行存列存结果按区域分组聚合 GROUP BY region849 ms2364 ms行存快 2.8 倍单列全表聚合 SUM(amount)142 ms237 ms行存快 1.7 倍全表计数 COUNT(*)74 ms113 ms行存快 1.5 倍列存全线溃败。最典型的 OLAP 场景分组聚合行存比列存快了近 3 倍。连列存理论上最该赢的单列聚合只读一列数据列存也慢了 1.7 倍。这和列存适合分析的常识完全相反。我不死心又补测了一个对列存最有利的极端场景只扫描一个窄列算AVG(discount)。行存 156ms列存 244ms还是慢。列存在这台机器上就是快不起来。五、为什么把常识拆开看列存应该快是因为它在磁盘 IO 成为瓶颈的时候能少读数据只读需要的列加上高压缩。这个前提在我的实验里根本不成立。行存的 173MB整个装进了 1.5GB 的shared_buffers。行存查询是纯内存扫描磁盘 IO 早就不是瓶颈了。列存少读数据的看家本领在数据已经全缓存的情况下完全没有用武之地。反过来列存要付的代价却一分不少。cstore_fdw是通过外部数据包装器实现的每次查询都要穿过 FDW 这层翻译没法像原生行存那样走最优路径比如并行扫描。列存省空间靠压缩查询时每一块数据都要先解压这是纯 CPU 开销。聚合的时候还要把列式数据重新组装成行来计算又是一笔。IO 不是瓶颈的时候省 IO 的收益是零解压、FDW、重组的成本却实实在在压上来。此消彼长列存自然更慢。六、冷缓存也救不了写到这你可能想反驳那是因为数据全缓存了如果冷启动、真的要读磁盘呢那不正是列存少读数据的主场我把这个反驳也测了。重启实例清空shared_buffers模拟冷启动首次查询。行存冷查询约 1014 ms列存约 2447 ms。即便是冷缓存列存只需要从磁盘读 23MB行存要读 173MB列存依然慢 2.4 倍。少读了 150MB 的 IO还是更慢因为解压和逐行重组的 CPU 成本盖过了少读数据省下的那点 IO 时间。在 4 核这种 CPU 不算宽裕的机器上这个天平尤其向 CPU 开销一侧倾斜。七、那么 cstore_fdw 到底该怎么用测到这里结论已经很清楚了。但它不是列存没用而是列存的价值被贴错了标签。**cstore_fdw 的真正强项是存储压缩不是查询加速。**173MB 压到 23MB实打实的省空间利器。这个能力最适合的场景是冷数据、历史数据的归档那些必须留存但极少查询的老数据比如三年前的流水用列存归档能省下大量磁盘成本。另一类是超大规模、慢磁盘加列裁剪的组合数据量远超内存、磁盘 IO 真的成了瓶颈、查询又只涉及宽表的少数列这时候列存少读数据的优势才可能压过它的 CPU 开销扳回一城。而它不适合的场景恰恰是很多人以为它擅长的热点数据的交互式分析。数据能缓存进内存的时候行存的纯内存扫描又快又直接列存的 FDW 加解压开销纯属拖累。八、别让常识替你做选型我本来要写一篇列存加速分析的评测最后写成了一篇列存反而更慢的实录。200 万行数据给出的真实答案是cstore_fdw把存储压缩了 7.5 倍173MB 到 23MB却让分析查询慢了 1.5 到 2.8 倍。它是出色的存储压缩器不是查询加速器。更值得带走的是它背后的方法论。列存适合 OLAP 这句话需要加前提前提是 IO 真的是瓶颈。数据能装进内存、CPU 成为瓶颈的时候这句常识会带你走进反方向。技术选型上任何「X 一定比 Y 快」的标签都值得警惕。唯一可靠的办法是用你自己的数据、你自己的机器亲手跑一遍EXPLAIN ANALYZE。

相关新闻

make menuconfig 图形化配置:内核功能裁剪入门

make menuconfig 图形化配置:内核功能裁剪入门

2026/7/20 20:16:24

make menuconfig 图形化配置:内核功能裁剪入门作者:黒漂技术佬 | 系列:Linux内核配置与移植引言 上篇文章讲了 Kconfig 和 Makefile 的原理,这篇文章我们正式进入「点菜环节」。make menuconfig 是内核开发中使用频率最高的配置工…

解决问题:Vscode 自动更新不匹配远程服务器版本

解决问题:Vscode 自动更新不匹配远程服务器版本

2026/7/20 20:16:24

如有侵权或其他问题,欢迎留言联系更正或删除。 避免自动更新: 1. 打开:文件 - 首选项 - 设置 - 应用程序 - 更新; 2. 设置下列选项: 如果已自动更新,如何回退至原有的历史版本 : 去官网下载…

3分钟完成foobar2000美化:个性化界面定制终极指南

3分钟完成foobar2000美化:个性化界面定制终极指南

2026/7/20 20:16:24

3分钟完成foobar2000美化:个性化界面定制终极指南 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 你是否厌倦了foobar2000那单调乏味的默认界面?是否渴望拥有一个既美观又实用…

Windows和Office激活终极指南:KMS_VL_ALL_AIO智能激活工具完全教程

Windows和Office激活终极指南:KMS_VL_ALL_AIO智能激活工具完全教程

2026/7/21 11:47:22

Windows和Office激活终极指南:KMS_VL_ALL_AIO智能激活工具完全教程 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统弹窗提醒激活而烦恼吗?Office突然变…

Plane开源项目管理平台:5分钟掌握看板视图的终极指南

Plane开源项目管理平台:5分钟掌握看板视图的终极指南

2026/7/21 11:47:22

Plane开源项目管理平台:5分钟掌握看板视图的终极指南 【免费下载链接】plane 🔥🔥🔥 Open-source Jira, Linear, Monday, and ClickUp alternative. Plane is a modern project management platform to manage tasks, sprints, do…

Godot VR手部渲染:从控制器模型到骨骼动画的完整实现指南

Godot VR手部渲染:从控制器模型到骨骼动画的完整实现指南

2026/7/21 11:47:22

1. 项目概述:为什么要在Godot中做VR手部渲染? 如果你正在用Godot Engine捣鼓VR项目,并且已经搞定了基础的场景漫游和交互,那么下一个让你挠头的问题,十有八九就是:“我的控制器在哪?我的手呢&am…

终极USB安全监控指南:如何构建开源硬件USBvalve实时检测USB威胁

终极USB安全监控指南:如何构建开源硬件USBvalve实时检测USB威胁

2026/7/21 11:47:22

终极USB安全监控指南:如何构建开源硬件USBvalve实时检测USB威胁 【免费下载链接】USBvalve Expose USB activity on the fly 项目地址: https://gitcode.com/gh_mirrors/us/USBvalve 在数字安全日益重要的今天,USB接口已成为恶意软件传播和硬件攻…

TMS320F2802x ADC优先级控制:SOCPRICTL寄存器详解与电机控制应用

TMS320F2802x ADC优先级控制:SOCPRICTL寄存器详解与电机控制应用

2026/7/21 11:47:22

1. 项目概述与核心价值 在嵌入式实时控制领域,尤其是电机驱动、数字电源和工业自动化这些对时序和响应速度要求苛刻的应用中,模数转换器(ADC)的性能直接决定了整个系统的控制精度和稳定性。我们常常需要同时采集多路模拟信号&…

视频资源下载难题?res-downloader三分钟帮你搞定全网资源

视频资源下载难题?res-downloader三分钟帮你搞定全网资源

2026/7/21 11:37:22

视频资源下载难题?res-downloader三分钟帮你搞定全网资源 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 还在为无…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/21 5:45:57

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/21 9:56:14

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/21 3:09:32

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

GraphRAG Local + Ollama:微软知识图谱本地化

GraphRAG Local + Ollama:微软知识图谱本地化

2026/7/21 0:06:35

普通 RAG 有个老毛病:你问它「这堆文档整体在讲什么」,它答不上来。因为它只会把问题切成向量,去几十个文本块里捞最相似的几段拼给模型看。可「整体讲什么」这种问题,答案根本不在任何单独一段里——它散在全篇的联系里。 微软的…

AI 数据产品化思考:让分析能力变成可售卖的数据服务

AI 数据产品化思考:让分析能力变成可售卖的数据服务

2026/7/21 0:06:35

AI 数据产品化思考:让分析能力变成可售卖的数据服务 大家好,我是朱大喜。这周一直在复盘具体的项目和技术,最后一篇聊点不一样的东西——数据产品化。做了这么多年数据分析,我发现一个规律:能卖出去的从来不是"分…

基于人机协作的 AI 研发新体系架构:从 Harness 工程到 Loop 工程实践

基于人机协作的 AI 研发新体系架构:从 Harness 工程到 Loop 工程实践

2026/7/21 0:06:35

本文完整呈现了企业级 AI Coding 落地的核心方法论:从 Harness 工程的微观/宏观定义,到 Loop 工程的六大构建模块,再到基于 SDD(规范驱动开发)的工程化落地路径。干货较多,建议收藏细读。 我从 22 年开始就…