【DB吐槽大会】第77期 - PG 不支持索引随机采样

简介: 大家好,这里是DB吐槽大会,第77期 - PG 不支持索引随机采样

背景


1、产品的问题点

  • PG 不支持索引随机采样

2、问题点背后涉及的技术原理

  • 随机采样扫描用于返回随机数据. PG内置了表的随机采样方法, 例如按数据块随机采样、按记录随机采样.
  • 但是无法采用固定扫描方法进行随机采样, 例如有where条件的SQL, 符合条件的有10万条, 但是期望随机返回100条. 目前的方法是取得10万条后随机排序返回, 或者给定一个随机数返回.
  • select * from x where xxx order by random() limit x; 机会公平, 但是需要扫描所有符合条件的记录, 同时增加了排序成本
  • select * from x where xxx and random() < xx limit x; 跳过不满足条件的行, 但是这种方法的机会不公平, 很容易导致无法获取到索引扫描末尾符合条件的行.
  • 以上都会导致过度计算, 目前PG无法在索引扫描方法上根据符合条件的index block再随机扫描

3、这个问题将影响哪些行业以及业务场景

  • 通常被用于推荐系统, 在满足条件的记录范围内进行随机推荐.

4、会导致什么问题?

  • 导致过度计算

5、业务上应该如何避免这个坑

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • 需要非常专业的知识

7、数据库未来产品迭代如何修复这个坑

  • 希望内核支持 index scan sample method , 对应table sample, 这个是索引扫描的随机采样功能.
  • 例如在branch层随机选择leaf page.



相关文章
|
运维 监控 Java
推荐一款好用的Java分布式任务调度框架!
推荐一款好用的Java分布式任务调度框架!
828 0
|
安全 搜索推荐
下载软件别再被套路!教你避开流氓下载器的坑!
安装之前,可以看到界面中明显的提示:“使用360安全导航”、“ABC看图”,这两处旁边还有复选框,细心的你肯定知道要把这两个复选框去掉。
730 0
下载软件别再被套路!教你避开流氓下载器的坑!
|
5月前
|
人工智能 JavaScript Linux
零门槛养虾指南:OpenClaw一键安装、云端部署、国内模型配置与飞书/微信聊天工具接入全流程
OpenClaw(也叫 Clawdbot)是2026年最火的开源AI智能体框架,它能让你把大模型接到微信、飞书、Telegram等日常工具,让AI真正帮你自动干活、自动回复、自动整理信息、记住你的习惯、执行定时任务。但很多新手卡在安装、命令行、报错、模型配置、端口不通、无法联网等问题上。
1102 11
|
5月前
|
Web App开发 人工智能 缓存
OpenClaw极速部署保姆级教学:自动化每日采集行业简报发至飞书/钉钉指南
每天手动筛选海量信息、追踪行业动态,不仅耗时耗力,还容易遗漏关键机会。而OpenClaw作为开源AI代理工具,可通过定制化配置,化身专属个人情报分析师——每天在指定时间自动扫描细分领域信息源,生成结构化简报,涵盖头条新闻、趋势讨论、机会洞察等核心板块,让你一醒来就掌握所有重要信息。
2117 9
OpenClaw极速部署保姆级教学:自动化每日采集行业简报发至飞书/钉钉指南
|
Java 关系型数据库 MySQL
如何安装系统必备开发环境:JDK 1.8+、MySQL 5.7+ 与 Maven 3.0+
【7月更文挑战第1天】搭建Java开发环境:安装JDK 1.8+,MySQL 5.7+,Maven 3.0+。访问官方源下载对应软件,配置Windows或Linux/macOS的环境变量,包括`JAVA_HOME`, `PATH`, `MYSQL_ROOT_PASSWORD`及`MAVEN_HOME`。测试安装成功分别用`java/javac -version`, `mysql -u root -p`和`mvn -v`检查版本。完成后,即可开始Java项目开发。
1477 0
|
存储 芯片 异构计算
LocalBus总线介绍及FPGA总线编程
LocalBus总线介绍及FPGA总线编程
3666 0
LocalBus总线介绍及FPGA总线编程
|
消息中间件 搜索推荐 关系型数据库
淘东电商项目(50) -ELK+Kafka分布式日志收集(实现篇)
淘东电商项目(50) -ELK+Kafka分布式日志收集(实现篇)
565 0
|
测试技术 索引 Python
Pandas的apply, map, transform介绍和性能测试
在这篇文章中,我们将通过一些示例讨论apply、agg、map和transform的预期用途。
611 0
Pandas的apply, map, transform介绍和性能测试
|
存储 Linux 计算机视觉
Linux基础学习:文件与文件系统的压缩与打包
Linux基础学习:文件与文件系统的压缩与打包
486 0
|
机器学习/深度学习 人工智能 自然语言处理
译讯科技创始人马帅:打造“译+生态圈”,用AI赋能各行业
1.支持翻译多达32门语种,每分钟翻译10万字,助力企业节省90%成本,在AI智能文档翻译领域,一家来自四川成都的企业做到了。 2.“拥有以中文为核心语言的超级双语大数据库”,承载起这个沉甸甸的称号不易,译讯科技创始人马帅和其团队几乎用了8年才实现这一目标。
译讯科技创始人马帅:打造“译+生态圈”,用AI赋能各行业