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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

标签

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

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

相关文章
|
1月前
|
机器学习/深度学习 API 计算机视觉
视觉智能平台常见问题之使用智能分镜功能拆分镜头丢失部分镜头如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
30 0
|
2月前
|
机器学习/深度学习 算法 搜索推荐
【实操】数据扩增:Retinex算法用于图像颜色恢复和对比度增强
【实操】数据扩增:Retinex算法用于图像颜色恢复和对比度增强
32 0
【实操】数据扩增:Retinex算法用于图像颜色恢复和对比度增强
|
4月前
|
存储 算法 数据库
魔方还原算法(三)上帝算法
魔方还原算法(三)上帝算法
22 0
|
7月前
|
机器学习/深度学习 传感器 算法
【图像重建】在线全息图的迭代双图像自由重建附matlab代码
【图像重建】在线全息图的迭代双图像自由重建附matlab代码
|
8月前
|
人工智能 自然语言处理 算法
自由编辑人脸打光:基于生成模型的三维重光照系统上线
自由编辑人脸打光:基于生成模型的三维重光照系统上线
206 0
|
9月前
|
XML 编解码 数据格式
下载哨兵2号大气校正后L2A级数据的方法
本文介绍在Sentinel哨兵遥感影像数据官网中,下载已经经过大气校正的Sentinel-2 L2A级遥感影像产品的方法~
257 1
下载哨兵2号大气校正后L2A级数据的方法
|
10月前
|
数据可视化 C++
【变化检测】多时相遥感影像变化检测 Qt界面可视化 / 实现卷帘功能(附有完整代码)
【变化检测】多时相遥感影像变化检测 Qt界面可视化 / 实现卷帘功能(附有完整代码)
|
10月前
|
数据可视化 搜索推荐 数据挖掘
盘一盘画相关性热图的几种方式
R可视化相关性矩阵的几种方案 R中相关性矩阵的可视化解决方法在已经有很多了,我们在这里总结一些常用的都有哪些: 1. ggplot2包 2. corrplot包 3. 热图包(pheatmap,heatmap包等) 4. ggally 包中的 ggcorr() 函数 5. ggcorrplot 包
136 0
|
11月前
|
编解码 缓存 计算机视觉
神还原物体复杂、高频细节,4K-NeRF高保真视图合成来了
神还原物体复杂、高频细节,4K-NeRF高保真视图合成来了
|
存储 定位技术 数据格式
巧用千寻位置GNSS软件| 电力线勘测如何实现?
正如大家所知,电力线勘测是在做电力线路设计之前对设计线路沿途自然环境进行勘察测量,最后把手簿测量数据在电脑端经过转换输出为电力软件专用格式数据的专用功能。 那么在千寻位置GNSS软件中该如何操作完成电力线的勘察测量呢?