DevOps研发效能
媒体矩阵
开源中国APP
授权协议 GPL-2.0,MIT
开发语言 Python Google Go
操作系统 跨平台
软件类型 开源软件
所属分类 数据库相关
开源组织
地区 国产
投 递 者 白开水不加糖
适用人群 未知
收录时间 2025-04-07

软件简介

VIDEX 为 MySQL 提供了一个解耦的、可扩展的开源虚拟索引引擎 ([VI]rtual in[DEX])。

  • 虚拟索引:不需要真实数据、仅基于统计信息和算法模型,即可高精度地模拟 MySQL 产生的查询计划、模拟表连接顺序、模拟索引选择;
  • 分离式架构 (Disaggregated):VIDEX 支持在单独的实例上部署,而不必须在原始库 MySQL 上安装;VIDEX 支持独立启动算法服务,而不必嵌入 MySQL 中;
  • 可拓展 (Extensible):VIDEX提供了便捷的接口,用户可以将 基数估计(Cardinality)、独立值估计(NDV) 等算法模型应用于 MySQL 的下游任务中(例如索引推荐);

“虚拟索引” 旨在模拟 SQL 查询计划中使用索引的代价(cost), 从而向用户展示索引对 SQL 计划的影响,而无需在原始实例上创建实际索引。 这项技术广泛应用于各种 SQL 优化任务,包括索引推荐和表连接顺序优化。 业界许多数据库已经以官方或第三方的方式提供了虚拟索引功能, 例如 Postgres Oracle  IBM DB2

注意:此处使用的“虚拟索引”一词与 MySQL 官方文档 中提及的“虚拟索引”不同, 后者指的是在虚拟生成列上构建的索引。

此外,VIDEX 封装了一组用于成本估算的标准化接口, 解决了学术研究中的热门话题,如 基数估计  不同值数量(NDV)估计。 研究人员和数据库开发人员可以轻松地将自定义算法集成到 VIDEX 中以用于优化任务。 默认情况下,VIDEX 可以以 ANALYZE TABLE 的方式收集统计信息,或者基于少量采样数据构建统计信息。

VIDEX 提供两种启动模式:

  1. 作为插件安装到生产数据库:将 VIDEX 作为插件安装到生产数据库实例。
  2. 独立实例:此模式可以完全避免影响在线运行实例的稳定性,在工业环境中很实用。

在功能方面,VIDEX 支持创建和删除索引(单列索引、复合索引、EXTENDED_KEYS 索引)。 目前暂不支持函数索引(functional indexes)、全文索引(FULL-Text)和空间索引(Spatial Indexes)。

拟合精度方面,已经在 TPC-HTPC-H-Skew  JOB 等复杂分析基准测试上对 VIDEX 进行了测试。 给定准确的 ndv 和 cardinality 信息,VIDEX 可以 100% 模拟 MySQL InnoDB 的查询计划。 (更多详细信息参考 3. Example: TPCH Tiny 章节)。

架构

VIDEX 包含两个模块:

  • VIDEX-Optimizer-Plugin(简称 VIDEX-Optimizer):VIDEX 的 “前端”。可以作为插件安装到现有数据库,或者以一个独立的新实例启动。这一部分实现了 MySQL 查询优化器接口,并将其中一部分复杂的请求转发到 VIDEX-Statistic-Server。我们全面梳理了 MySQL handler 的超过 90 个接口函数,并实现与索引(Index)相关的接口。
  • VIDEX-Statistic-Server(简称 VIDEX-Statistic):VIDEX 的 “后端”。基于收集到的统计信息(表行数、表大小、直方图等等)和集成的算法或模型,计算独立值(NDV) 和基数(Cardinality),并将结果返回给 VIDEX-Optimizer。
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
发表了资讯
04/07 11:44

字节跳动开源 MySQL 虚拟索引 VIDEX

字节跳动于日前宣布正式开源了 MySQL 虚拟索引项目 VIDEX(Virtual Index ),旨在让 MySQL 也有了自己的虚拟索引机制。 虚拟索引技术(virtual index,也称为 hypothetical index)在数据库系统的查询优化、索引推荐等场景中扮演着关键角色。简单来说,虚拟索引可以理解为数据库的'沙盘推演'系统——无需真实构建索引,仅基于统计信息即可精准模拟不同索引方案对查询计划的优化效果。由于虚拟索引的创建/删除代价极低,使用者可...

0
3
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
0 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部