多阶魔方复原在数据优化中的应用

简介:

标签

PostgreSQL , 元素分布 , 减少HEAP IO , 数据聚集重组


背景

前一篇文章介绍了一个场景,利用多列索引,多种索引接口(GIN\BTREE\BRIN...)以及PostgreSQL内置的bitmapAnd, bitmapOr等手段,提升广告营销实时搜索性能,同时兼顾开发工作量。

《懒人推动社会进步 - 多列聚合, gin与数据分布(选择性)》

其中在讲到GIN索引的优化时,留了一个悬念,到底如何通过调整数据分布,降低GIN索引扫描的IO放大,提高扫描效率?

3、gin数据分布优化  
  
如果是普通类型,则线性相关越好,扫描或返回多条数据的效率越高。  
  
如果是多值类型(如数组、全文检索、TOKENs),则元素越集中(元素聚类分析,横坐标为行号,纵坐标为元素值,数据分布越集中),效率越高。  
  
元素集中通常不好实现,但是我们可以有集中方法来聚集数据,  
  
1. 根据元素的出现频率进行排序重组,当用户搜索高频词时,扫描的块更少,减少IO放大。   
  
2. 根据(被搜索元素的次数*命中条数)的值进行排序,按排在最前的元素进行聚集,逐级聚集。      
  
(以上方法可能比较烧脑,下次发一篇文档专门讲GIN的数据重组优化)   

聚集有什么用呢?如何聚集呢?

数据分布例子

例子

假设有6条记录,每条记录存储了一些VALUE(数组),6条记录方便演示。

pic

图形化如下

pic

当搜索包含2的数据时,需要扫描第1,2条记录。

当搜索包含1的数据时,需要扫描第1,3,5条记录。(1,3,5离散分布,即现实中包含1的数据,很可能在不同数据块中,那么需要扫描更多的数据块)。

接下来做一个简单的存储调整,将数据进行重排。

pic

图形化如下

pic

很显然,现在没有离散的数据了,对同一个元素来说,更加的紧密相连,例如搜索包含1的数据时,他们是相邻的记录(现实中极有可能在同一个数据块中)。

说到数据重分布,就涉及到聚集的问题了,如何让同一个元素,尽量的靠在一起呢?

你需要了解一些数据科学计算的知识,可以参考一下:

《数据库任督二脉 - 数据与计算的生态融合》

真实情况下,几乎不可能做到每一个元素的行都是紧密相邻的,就像玩“不可复原的(有BUG的)”多阶魔方。你怎么转,都不可能做到面面俱到。

pic

我们只能通过科学计算,尽可能的找到最终态较好的数据分布状态。

目录
相关文章
|
4月前
|
边缘计算 网络协议 5G
AIWCLOUD:免备案CDN,过移动屏蔽,不限内容,在传统内容分发网络(CDN)的语境下
本文介绍一种免备案、可穿透移动网络屏蔽的CDN架构,通过UDP私有隧道、TLS SNI伪装、QUIC优先、动态IP/端口调度等技术,构建高隐蔽、抗DPI的透明传输通道,助力跨境业务与远程办公突破运营商限制。(239字)
340 1
|
6月前
|
人工智能 JavaScript 前端开发
Seedance 原理全解:从架构设计到核心代码,这篇彻底讲清楚了
本文深度解析字节跳动Seedance视频生成模型:从1.5 Pro到2.0的架构演进,揭秘双分支扩散、MM-RoPE位置编码与帧级音画同步原理;手把手演示Python/Node.js调用、重试机制及Prompt优化技巧,助开发者真正落地AI视频生产。
|
7月前
|
人工智能 开发框架 自然语言处理
从能力整合到价值落地:Java企业的AI中台建设实践路径
本文探讨Java企业AI转型路径,提出构建分层AI中台——整合模型接入、知识库训练、服务编排与业务落地能力,推动AI从“AIGC内容生成”迈向“AIGS服务生成”。通过能力组合范式,实现智能问答、AI Agent等场景快速落地,助力Java团队低门槛、高效率完成智能化升级。(239字)
355 1
|
Android开发
获取Android设备屏幕大小
获取Android设备屏幕大小
431 3
|
机器学习/深度学习 存储 计算机视觉
基于YOLOv8深度学习的遥感地理空间物体检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测(2)
基于YOLOv8深度学习的遥感地理空间物体检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测
|
人工智能 JavaScript 前端开发
【利用AI让知识体系化】入门Express框架(一)
【利用AI让知识体系化】入门Express框架
|
监控 安全 Cloud Native
带你读《云原生机密计算最佳实践白皮书》——Intel SGX: Intel安全防护扩展
带你读《云原生机密计算最佳实践白皮书》——Intel SGX: Intel安全防护扩展
1453 1
|
机器学习/深度学习 TensorFlow 算法框架/工具
ShuffleNetV2:设计轻量化卷积神经网络的理论准则和应用实现
目前,神经网络架构设计主要由计算复杂度的间接度量,即 FLOPs 指导。然而,直接指标(例如速度)还取决于其他因素,例如内存访问成本和平台特性。因此,这项工作建议评估目标平台上的直接指标,而不仅仅是考虑 FLOP。基于一系列受控实验,这项工作得出了几个有效网络设计的实用指南。因此,提出了一种新的架构,称为 ShuffleNet V2。全面的消融实验验证了我们的模型在速度和准确性的权衡方面是最先进的。
1532 0
ShuffleNetV2:设计轻量化卷积神经网络的理论准则和应用实现
|
安全 网络协议 测试技术