5. Doris索引全解|前缀/ZoneMap/Bloom/Bitmap/倒排索引选型+实战调优

Doris-07-索引的详细介绍(前缀索引、Ordinal索引、Zone Map索引、Bitmap索引、Bloom Filter索引、NGram BloomFilter索引、倒排索引) Apache Doris 存储引擎采用类似LSM树的结构提供快速的数据写入支持。进行数据导入时,数据会先写入 Tablet 对应的 MemTable 中,当 MemTable 写满之后,会将 MemTable 里的数据刷写(Flush)到磁盘,生成一个个不超过 256MB 的不可变的 Segment 文件。MemTable 采用SkipList的数据结构,将数据暂时保存在内存中,SkipList 会按照 Key 对数据行进行排序,因此,刷写到磁盘上的 Segment 文件也是按 Key 排序的。 阅读详情

专栏导语

本文是Apache Doris 原理实战系列第5篇,全程干货无废话!吃透Doris六大核心索引底层原理、生效规则、手写SQL+生产级最佳实践,告别盲目建索引、查询慢、存储膨胀踩坑问题。新手能看懂,大佬能落地,收藏常驻备查!


一、索引技术总体设计思想

Doris 的索引体系严格遵循 「存储计算协同」+「按需启用」 两大核心原则:
✅ 所有索引内嵌于列存Segment文件,无需搭建独立索引服务,运维零负担;
✅ 数据写入阶段自动构建索引,查询时执行引擎智能判定是否触发使用;
✅ 核心目标:极致减少磁盘I/O、快速跳过无关Data Page数据块,强化谓词下推效率。

📌 重点区分:Doris索引是轻量级、列级别、纯OLAP场景适配,和传统MySQL B+Tree行级索引完全不是一套逻辑,切勿混用设计思路!


二、前缀索引(Shortkey Index)|默认零成本提速10倍

2.1 实现原理

基于表Sort Key(排序键)打造的稀疏轻量化索引:

  1. 默认每1024行采样一条排序键,聚合为单个逻辑Data Block;
  2. 每个数据块仅存1条索引项,上限36字节,取块内首行排序列前缀值;
  3. 特殊规则:遇到VARCHAR字符串列直接截断,未满36字节也不再追加后续列;
  4. 索引常驻Segment文件头部,体积极小,可全量缓存内存,类B+Tree快速检索;
  5. 粒度锁定数据块级,不精准定位单行,核心作用是批量过滤无效Block。

💡核心价值:WHERE条件命中排序键前缀,秒级锁定查询起止Data Page,批量裁剪数据。

2.2 创建与使用规则

🔹 创建逻辑:无需手动定义,建表时自动抓取DUPLICATE KEY/UNIQUE KEY前缀,限制36字节;单表Key唯一,仅能生成一组前缀索引。
🔹 触发规则:完全自动生效,无额外SQL语法。
🔹 效果核验:通过Query Profile查看RowsKeyRangeFiltered指标,直观看到前缀索引过滤行数,对比总数据量判断优化效果。

⚠️致命短板:查询条件不含排序键前缀列,稀疏索引直接失效!

2.3 适配场景

  • 时间范围查询:event_time BETWEEN '2025-01-01' AND '2025-01-02'
  • Sort Key前缀列等值/IN精准查询
  • 全表默认强制启用,不支持手动关闭

2.4 生产最优配置建议

  1. 高频WHERE过滤字段优先放入Sort Key,越常用越靠前;
  2. 字符串列后置放置,规避前缀截断浪费索引空间;
  3. 优先把Int整型列放首位,过滤效率远超字符串;
  4. 高基数、高区分度字段前置,快速批量筛除无效数据;
  5. 严禁低基数列(性别、状态)置顶,直接拉低索引区分度;
  6. 时间列首选首位,实现分区+索引双重数据裁剪;
  7. 实际生效最多抓取前3列,冗余Sort Key无意义。

三、ZoneMap索引(Min/Max索引)|全员标配极简过滤

3.1 实现原理

纯元数据级轻量索引,零额外运维成本:

  1. 每个Data Page自动记录单列最小值/最大值,数值、日期、字符串全兼容;
  2. 存储分层:Segment Footer存整段最值,Page Header存单页最值;
  3. 占用极低:单页仅16~32字节,几乎无存储开销;
  4. 触发逻辑:遇到col > X / col < Y范围谓词,直接跳过最值不匹配的整页数据。

举例:某页age字段min=18、max=65,查询WHERE age>70,整页直接过滤,无需扫描。

3.2 适配场景

  • 所有数值、时间、字符串列的常规范围查询
  • 全表默认开启,无需手动创建
  • 数据有序场景增益最大化,最值区间更紧凑

3.3 调优实操

  • 无自定义配置参数,全程自动化;
  • 核心优化:合理设计Sort Key,保证数据局部有序,压缩ZoneMap最值范围;
  • 乱序导入(Kafka无序日志)后,手动触发Compaction重排序,恢复索引效率。

✅补充提醒:ZoneMap不支持等值查询,需搭配布隆/位图索引使用!


四、BloomFilter布隆索引|高基数等值查询神器

4.1 实现原理

经典概率型索引,核心逻辑二选一:可能存在 / 一定不存在

  1. 为单列每个Data Page构建位数组+多哈希映射结构;
  2. 精准判定数据绝对不存在,快速过滤无效数据页,无法精准定位单行;
  3. 专属适配:高基数列等值、IN查询,拒绝Tinyint/Float/Double类型。

4.2 适配场景

✅ 推荐:user_id、device_id、url等高基数字符串列;= / IN精准匹配查询
❌ 禁用:范围查询、低基数列(误判率飙升,毫无增益)

4.3 建表&运维SQL(直接复制可用)

-- 建表时指定布隆索引
CREATE TABLE IF NOT EXISTS sale_detail_bloom (
-- 自定义字段
)
Duplicate KEY(...)
PROPERTIES (
"bloom_filter_columns" = "column_name1,column_name2"
);

-- 新增布隆索引
ALTER TABLE table_name SET ("bloom_filter_columns" = "column_name1,column_name2,column_name3");

-- 删除指定布隆索引
ALTER TABLE table_name SET ("bloom_filter_columns" = "column_name2,column_name3");

效果核验:查看Query Profile中RowsBloomFilterFiltered(过滤行数)、BlockConditionsFilteredBloomFilterTime(索引耗时)。

4.4 核心参数&最佳实践

核心参数默认值说明
bloom_filter_fpp5%误判率越低精度越高,占用存储空间越大
单页索引体积~1KB/Page受误判率、字段去重数影响

💡落地建议:

  1. 仅核心高基数字段启用,整体新增存储占比约10%;
  2. 低基数状态字段无需配置,浪费资源无收益;
  3. 误判不影响查询结果,仅多扫描少量数据页,安全稳定;
  4. 仅生效= / IN,≠、NOT IN、范围查询完全无效。

五、Bitmap位图索引|低基数多维聚合秒杀

5.1 实现原理

专为低基数列打造的位运算索引:

  1. 字段每个唯一值对应独立Bitmap位图,标记每行数据归属;
  2. 支持高效AND/OR/NOT位运算,多维组合过滤性能拉满;
  3. 典型案例:gender字段M/F,分别生成独立位图,快速交叉筛选。

5.2 适配场景

  • 低基数列(去重值<1000):地区、品类、业务状态
  • 多维联合过滤:city='北京' AND category='数码'
  • 搭配Bitmap字段,实现秒级UV去重统计

5.3 快速创建SQL

-- 新增位图索引
ALTER TABLE sales ADD INDEX idx_city (city) USING BITMAP;
-- Doris2.0+支持建表时直接声明

5.4 限制&落地避坑

  1. 仅支持:整型+≤50长度字符串,高基数列会导致索引体积爆炸;
  2. 存储开销大:最高可达原始数据20%-50%;
  3. 不适合高频更新Unique表,索引维护成本极高;
  4. 黄金组合:聚合模型+Bitmap_UNION,搞定海量数据UV统计。

六、倒排索引(Inverted Index)|Doris2.0+全文检索专属

6.1 实现原理

借鉴搜索引擎Lucene架构,主打非结构化文本检索:

  1. 构建「关键词→行号列表」映射,支持模糊、全文、组合查询;
  2. Doris2.1+优化自研轻量化结构,独立文件存储,不改动原数据;
  3. 性能代价:写入性能下降20%-50%,存储膨胀1.5~3倍。

6.2 适配场景

  • 日志报错检索:message LIKE '%error%'
  • 评论、描述类文本模糊匹配
  • 替代低效全表扫描的前后模糊查询

6.3 建表示例(Doris2.1+直接用)

CREATE TABLE app_log (
    id BIGINT,
    msg TEXT,
    INDEX idx_msg (msg) USING INVERTED
) ENGINE=OLAP
DUPLICATE KEY(id);

6.4 支持检索语法

-- 全文匹配
SELECT * FROM app_log WHERE msg MATCH 'error timeout';
-- 前缀模糊查询
SELECT * FROM app_log WHERE msg LIKE 'err%';
-- 布尔组合筛选
SELECT * FROM app_log WHERE msg MATCH '+error -warning';

6.5 调优&最佳实践

  1. 仅文本检索刚需字段启用,非必要不创建;
  2. 中文场景配置ngram分词器,推荐ngram_size=2;
  3. 日志、监控、对话类非结构化数据首选,结构化数据禁用。

七、索引终极总结|选型决策+全局调优

7.1 快速选型口诀

👉 范围查询优先:前缀索引+ZoneMap(零成本必配)
👉 高基数等值:BloomFilter布隆索引
👉 低基数多维筛选:Bitmap位图索引
👉 文本模糊/全文检索:倒排索引(2.0+专属)

7.2 生产全局调优准则

  1. 吃透免费索引:优先优化Sort Key,把Shortkey+ZoneMap性能拉满,不花存储成本;
  2. 拒绝堆砌索引:每类索引都会增加写入压力、占用存储,按需精准配置;
  3. 全程监控核验:EXPLAIN看索引命中、后台观测Page跳过率,及时裁剪无效索引;
  4. 高阶组合:复杂聚合场景,搭配带索引的物化视图,性能再翻倍;
  5. 版本红利:升级Doris2.0/2.1,解锁倒排索引、增量更新等高阶能力。

💎

  1. 本文为Apache Doris原理实战系列
  2. 收藏本文!日常Doris索引选型、排障调优直接对照,告别翻文档踩坑;
  3. 关注博主,持续更新Flink+Doris实时数仓全链路教程,从原理到落地全覆盖;
Doris索引实战指南:如何用前缀索引+ZoneMap提升查询性能50%? 本文深入解析了Apache Doris中前缀索引与ZoneMap索引的协同优化策略。通过电商订单查询的实战案例,详细阐述了如何通过调整前缀索引列顺序与长度,并结合ZoneMap索引的自动过滤能力,有效减少I/O与计算开销,从而将高频查询性能提升50%以上。文章还提供了索引设计原则、效果验证及监控诊断方法,是一份提升Doris查询效率的实用指南。 阅读详情

相关推荐

zonemap:[已弃用] 用于查找地址或其他位置的相应芝加哥警区和无线电调度区的工具

区域图 用于查找地址或其他位置的相应芝加哥警区和无线电调度区的工具。 已弃用 此存储库现已弃用,因为该工具已集成到主网站中。 请参阅此工具以及其他工具的新存储库 。

Oracle性能提升特性:Zone Map和Attribute Clustering

概念 Zone Map和Attribute Clustering都是12.1.0.2的新特性。 按照Oracle Database Features的说法,Zone Map的描述为: For full table access, zone maps allow I/O pruning of data based on the physical location of the data on disk, acting like an anti-index (索引的目的在于快速定位数据,而auti-index

In-Memory Computing Technology 1217

doris5.0安装教程

由于doris5.0.3的版本问题过多,使用非常不方便,没有doris5.0版本稳定,故推荐安装5.0版本

doris ZoneMap 索引

ZoneMap 索引是在列存格式上,对每一列自动维护的索引信息,包括 Min/Max,null 值个数等等。在数据查询时,会根据范围条件过滤的字段按照 ZoneMap 统计信息选取扫描的数据范围。在没有命中 Short Key Index 的情况下,会根据条件语句中 age 的查询条件,利用 ZoneMap 索引找到应该扫描的数据 ordinary 范围,减少要扫描的 page 数量。

学亮编程手记 477

【论文速读】MLDT:基于开源大语言模型的复杂长时机器人任务规划多层次分解方法

—在数据驱动的人工智能技术领域,开源大语言模型(LLMs)在机器人任务规划中的应用是一个重要的里程碑。近期基于开源大语言模型的机器人任务规划方法通常利用大量的任务规划数据集来提升模型的规划能力。虽然这些方法展现出了一定的前景,但它们在处理复杂长时任务时存在困难,因为这类任务需要理解更多的上下文信息并生成更长的动作序列。本文提出多层次分解任务规划方法(MLDT)来解决这一局限性。该方法创新性地在目标级、任务级和动作级对任务进行分解,以应对复杂长时任务带来的挑战。

muyulingfengye的博客 1642

ICC II 时钟树综合(CTS)前奏:从约束定义到NDR规则的全方位设置指南

本文详细介绍了ICC II中时钟树综合(CTS)的前期准备工作,包括约束定义、NDR规则设置和时钟平衡点控制等关键步骤。通过实际案例和代码示例,指导工程师如何优化时钟偏斜、插入延迟和信号质量,确保芯片设计的时序收敛和性能稳定。特别强调了非默认布线规则(NDR)在时钟网络设计中的重要性。

weixin_42530458的博客 212

Oracle Database 12c Attribute Cluster 和 Zone Map 高阶实验

本文为参照此教程的实验过程。 此实验设计得非常好,感谢作者Nigel Bayliss和Veerabhadra Rao Putrevu。 术语翻译 Attribute Cluster:属性聚类 Clustering:聚类 Zone Map:区域地图 Overview 本教程介绍了 Oracle Database 12c 属性集群和区域映射,这些特性旨在显着减少查询的 IO,否则这些查询将执行全表扫描。时长约45分钟。 属性聚类是一种表级指令,它根据某些列的内容对数据进行聚类,使其物理上接近。将逻辑上属于在

In-Memory Computing Technology 955

Yolov26 在 Rk3588 上的 Rknn Onnx 部署实践(c++)

本文介绍了YOLOv26在RK3588平台的C++推理部署方案。重点包括:1)扩展Ultralytics导出格式,新增RKNN_ONNX专用导出选项;2)重构Detect Head结构,使其更适合RKNN推理;3)提供C++侧后处理实现建议。该方案保留了Ultralytics训练生态,通过优化模型结构输出,将解码等操作移至C++端,充分发挥Rockchip NPU性能。适用于RK3588/RK356x等平台,需配合rknn-toolkit2使用,为YOLOv26的嵌入式部署提供完整解决方案。

qq_64366203的博客 2176

第2.1章 StarRocks表设计——概述

第2.1章 StarRocks表设计——概述

爱吃辣条的博客 2264

PhoenixSuit全志刷机实战:从驱动安装到固件烧录的完整避坑指南

本文提供全志芯片设备使用PhoenixSuit进行线刷的完整实战指南。详细介绍了从驱动安装、双公头USB线连接、强制刷机模式进入,到固件烧录全过程的核心步骤与常见错误排查。重点解析了如何避免驱动安装失败、正确触发刷机模式以及应对烧录卡顿等关键问题,帮助用户顺利完成刷机或救砖操作。

algae的博客 1685

YOLO11涨点优化:训练技巧 | 使用标签平滑(Label Smoothing)配合余弦退火学习率,防止过拟合,稳步提点

摘要: YOLO11凭借动态卷积核调度、自适应特征融合等创新成为2026年目标检测主流,但面临训练集过拟合问题。文章聚焦两种零推理开销的正则化技巧:标签平滑(Label Smoothing)和余弦退火学习率(Cosine Annealing LR)。标签平滑通过软化硬标签(如将[1,0]改为[0.9,0.1])防止模型过度自信,代码中通过label_smoothing=0.1一键启用;余弦退火则以平滑的余弦曲线调整学习率(cos_lr=True),避免阶梯衰减的震荡。两者组合可显著缩小YOLO11训练与验证

2601_95807009的博客 45

Apache Doris 入门教程08:建立和使用索引

本文对ApacheDoris中的索引建立和使用方法进行简要介绍,目前 Doris 主要支持两类索引:1. 内建的智能索引,包括前缀索引和 ZoneMap 索引。2. 用户手动创建的二级索引,包括 倒排索引、bloomfilter索引、ngram bloomfilter索引和bitmap索引。

sunjian286的专栏 7522

SAP-ABAP:ABAP 开发基础概念入门:写给刚踏入 SAP 开发世界的新人

本文介绍了 ABAP 开发语言的基础概念,帮助 SAP 开发新人快速入门。主要内容包括: ABAP 的发展历程与核心优势 - 作为 SAP 平台的专属语言,ABAP 在企业级应用开发中具有深度集成、数据处理高效和长期稳定的特点 ABAP 开发环境概览 - 介绍了 SE38、SE80 等关键事务码,以及 ABAP 工作台的核心组件和开发权限管理 基础语法入门 - 重点讲解了 ABAP 特有的数据类型体系(特别是结构体和内表),并通过 Hello World 示例展示程序基本结构 文章通过对比 ABAP 与 J

baidu_35680696的博客 511

Doris——索引的创建和命中

doris索引的使用及注意事项

weixin_71195617的博客 3034

BUG调试案例一:RK3588+YT8531网络无法PING通调试案例

在使用 RK3588 搭配 YT8531S PHY 芯片进行网络调试时,遇到了“网络无法 Ping 通”的棘手问题。排查了两天,终于找到问题原因。为了避免大家在类似项目中走弯路,也为了加深自己对调试细节的理解,我们特意整理了本次问题的完整排查过程。本篇文章将围绕以下四个方面展开分享: 问题现象&描述 调试过程&分析 问题根源定位 注意事项提醒 举一反三(走两步)

案例文章,高速信号 2335

Exploring Automated Distractor Generation for Math Multiple-choice Questions via Large Language Mode

多项选择题(MCQ)在几乎所有级别的教育中都无处不在,因为它们易于管理、评分,并且是评估和实践中可靠的格式。MCQ最重要的方面之一是干扰因素,即旨在针对真实学生常见错误或误解的不正确选项。迄今为止,对于教师和学习内容设计师来说,制作高质量的干扰物的任务在很大程度上仍然是一个劳动和时间密集型的过程,其可扩展性有限。在这项工作中,我们研究了数学MCQ领域的自动干扰物生成任务,并探索了从上下文学习到微调的各种基于大型语言模型(LLM)的方法。

c_cpp_csharp的专栏 317

导出IE浏览器配置的注册表信息 && IE设置的注册表相关信息以及修改方法

1,运行注册表编辑器  2,选中:HKEY_CURRENT_USER - 软件 - 微软 - Interner Explorer  (也可以选择其它选项) 3,右键导出到指定目录 - 完成    IE设置的注册表相关信息以及修改方法: IE 的安全属性设置是放置在注册表的以下位置的: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curren...

6块腹肌的博客 9679

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

修改注册表来修改IE的设置---资料汇总

1. 添加删除受信任站点: /HKEY_CURRENT_USER/SoftWare/Microsoft/Windows/CurrentVersion/Internet  Settings/ZoneMap/Ranges下有一个信任站点就有一个RangeN(N为1,2,3...)的记录 2. Internet自定义级别的修改: /HKEY_CURRENT_USER/SoftWare/

IT民工 4万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Oracle 20c 新特性:自动的区域图 - Automatic Zone Maps

导读:Zone Maps 是一个独立的访问结构,可以为表独立建立。在表和索引扫描期间,区块图可以根据表列上的谓词来修剪表的磁盘块和分区表的潜在完整分区。区块映射可以使用 Attribut...

Enmotech的博客 777

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

如何通过注册表,配置IE可信站点,兼容视图,ActiveX策略

*     参考至:http://blog.csdn.net/hanzengyi/article/details/7409107,  *     参考至:https://code.csdn.net/snippets/302829     网上的太乱,在项目自己进行了整理,开发自己的工具类。此技术为原创,翻版和转摘绝对不究,分享一点。   using System; using Sys

蓝叶菱的专栏 9622

Flink 学习日志 03:自定义一个SourceFunction,完成对Redis中数据的读取

本文介绍了在Flink中自定义SourceFunction读取Redis数据的完整流程:通过Jedis客户端连接WSL2中的Redis服务,编写RedisSource实现循环读取所有Key-value并逐条输出,结合Thread.sleep()实现每秒一条的流式效果。关键步骤包括环境准备、添加Jedis依赖、配置IDEA运行时加载provided依赖,并注意生产环境中应避免使用阻塞的keys *,改用scan命令。最终实现动态读取、实时打印,验证了Flink与Redis的数据集成能力。

木木的学习笔记 398

Flink SQL 连接器实战:MySQL Source、Flink CDC 与 JDBC Sink 全解析

提供有界流读取,适合批处理和维表场景,简单直接但无法感知变更。MySQL CDC提供无界流读取,通过「全量快照 + binlog 增量」的方式实现实时捕获,是实时数仓的核心入口,但需要 MySQL 侧正确配置 binlog 和权限。JDBC Sink负责结果回写,关键在于区分仅插入流和更新流,更新流必须依赖主键完成 upsert。掌握这三者的差异,本质上就是掌握了 Flink 中「有界与无界」「追加与更新」这两组最基本的语义。

2401_83857914的博客 414

管道检测机器人行业调查、市场规模、排名分析报告2026-2032

全球管道检测机器人市场持续增长,2026年规模达12.63亿美元,预计2032年增至29.06亿美元,复合增长率14.9%。受管网老化、监管趋严及非开挖技术普及推动,市场需求旺盛。产品以轮式和履带式为主,广泛应用于供水、油气等管道检测。行业竞争呈现国际企业主导高端、国内外厂商多元共存格局。未来趋势聚焦AI智能识别、模块化设计、RaaS模式创新及氢能等新兴场景应用,技术升级与标准化建设将成为关键驱动力。

GlobalInfo的博客 226

Elasticsearch ingest pipeline 被禁用之后:性能代价、安全治理与数据入库时间的四种替代方案

生产环境为什么禁用 Elasticsearch ingest pipeline?写入路径同步执行的开销、Painless 脚本的安全治理是根因;而 _ingest.timestamp 出不了 pipeline,ES 8/9 也没有原生入库时间字段。本文给出四种替代方案:采集端注入时间戳、bulk 响应后回写、refresh=wait_for 近似、最小 set pipeline 白名单,附选型对比与踩坑清单。

Sayai的专栏 335

Meta 816B 参数 Muse Spark Open 在 NVIDIA GB300 上实现每 GPU 50K tokens 每秒

Meta 推出针对代理编码优化的 816B 参数混合专家模型 Muse Spark Open,支持百万 token 上下文和多模态感知,在 NVIDIA GB300 NVL72 上达到每 GPU 50K tokens 每秒。

wfly blog 161

大数据工具介绍

Hive作为离线数仓的元数据管理与SQL接口,依托HDFS存储、Spark/MapReduce计算;Spark是统一的分布式计算引擎,承担复杂数据处理;DataX实现异构数据源间离线同步;ClickHouse擅长极速单表分析;Doris则提供实时、多表关联的综合分析能力;Flink作为原生流处理引擎,支持毫秒级实时计算与状态管理。两者共同构建起从离线批处理到实时流处理的完整数据链路。

yyk33324的博客 259
上一篇: 4. Doris 系列第4篇:存储引擎深度解析(LSM-Tree+列式存储+行存优化)
下一篇: 6. Doris 编码与压缩全解:存储优化+查询提速双提升(实战配置+调优)
juniperhan
博客等级 码龄1年 132粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值