常见问题

MapReduce BMR

  • 发行版本
  • 功能发布记录
  • 产品描述
    • 节点类型说明
    • 产品优势
    • 应用场景
    • 产品功能
    • 产品简介
  • Python-SDK
    • Cluster(集群)
    • BmrClient
    • 异常处理
    • InstanceGroup(实例组)
    • 简介
    • 文档更新记录
    • Step(作业)
    • 版本变更记录
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
  • 开源组件介绍
    • Impala
    • Pig
    • Druid
    • Presto
    • Hue
    • Ooize
    • HBase
    • Kudu
    • Sqoop
    • Hadoop-Streaming
    • Zeppelin
    • Alluxio
    • Kerberos
      • 集群互信配置
      • 概述
    • ClickHouse
      • 常见问题
      • 数据迁移同步
        • 从Spark导入
        • 从Kafka同步数据
        • 将自建ClickHouse数据迁移到云ClickHouse中
        • 从Flink导入
        • 从MySQL导入和同步
        • 从本地数据导入
          • Parquet格式
          • JSON
          • SQL转储
          • CSV and TSV
      • 快速入门
        • 访问模式
        • 客户端登录
        • 创建ClickHouse集群
        • 基础操作
      • 运维相关操作
        • ClickHouse集群扩容
        • ClickHouse集群缩容
        • 日志配置说明
        • 监控告警配置
    • Ranger
      • ranger概述
      • 权限策略配置
    • Paimon
      • Hive示例
      • StarRocks示例
      • 联合查询示例
      • Flink示例
      • Spark示例
    • Flink
      • 基础使用
    • Trino
      • 基础使用
      • 概述
    • Spark
      • 引擎增强
      • 基础使用
    • Hive
      • 开发指南
        • 自定义函数(UDF)
      • 实践操作
        • Hive迁移
        • Hive操作HBase外表
      • 基础使用
        • Hive基础操作
        • Hive连接方式
  • Java-SDK
    • Cluster(集群)
    • 异常
    • BmrClient
    • InstanceGroup(实例组)
    • 日志
    • 文档更新记录
    • 版本更新记录
    • Step(作业)
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
    • 概述
  • 快速入门
    • 操作流程概览
    • 环境准备
    • 创建集群
    • 数据准备
    • 开发作业
    • 查看结果
    • ClickHouse
      • 导入数据
      • 创建数据库
      • 连接集群
      • 创建表
  • 操作指南
    • 集群模板
    • 服务管理
    • 集群配置
      • 用户管理
      • 弹性伸缩
      • 创建集群
      • 集群安全模式
      • EIP
      • Hive元数据说明
      • 集群审计
      • 配置已有集群
      • 安全组
    • 管理作业
      • 创建作业
      • 诊断、调优
      • 定时任务
      • 查看作业
    • 访问集群
      • 访问集群服务页面
      • 访问集群-openVPN访问集群
      • 使用OpenVPN提交Hadoop作业
      • SSH连接到集群
    • 实践操作
      • 存储数据至HBase
      • 导入数据
      • 编译Maven项目
      • Sqoop导入导出数据
        • 导出数据
    • 权限管理
      • 多用户访问控制
      • 用户管理
    • 集群管理
      • 节点管理
      • 监控报警
      • 集群指标
      • 资源管理
  • 服务等级协议SLA
    • BMR服务等级协议SLA
  • API参考
    • 通用说明
    • 公共头
    • 数据类型
    • 版本更新记录
    • 服务域名
    • 实例操作接口
    • 实例组操作接口
    • 集群操作接口
    • API简介
    • 错误码
  • 常见问题
    • 安全性问题
    • 计费类问题
    • 常见问题总览
    • 性能类问题
    • 配置类问题
    • 故障类问题
  • 视频专区
    • 操作指南
    • 产品介绍
  • 场景教程
    • 流式应用场景
    • 离线应用场景
    • 使用Hive分析网站日志
    • Sqoop应用文档
    • 定时分析日志数据
    • HIVE
      • 不同集群的 Hive 迁移方案
      • Hive 操作 Hbase 外部表
  • 产品定价
    • 转换计费方式
    • 计费项
    • 到期或欠费说明
    • 包年包月计费
    • 续费说明
    • 变更配置计费说明
    • 计费方式
    • 按需计费
    • 账单和用量查询
    • 退款说明
所有文档
menu
没有找到结果,请重新输入

MapReduce BMR

  • 发行版本
  • 功能发布记录
  • 产品描述
    • 节点类型说明
    • 产品优势
    • 应用场景
    • 产品功能
    • 产品简介
  • Python-SDK
    • Cluster(集群)
    • BmrClient
    • 异常处理
    • InstanceGroup(实例组)
    • 简介
    • 文档更新记录
    • Step(作业)
    • 版本变更记录
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
  • 开源组件介绍
    • Impala
    • Pig
    • Druid
    • Presto
    • Hue
    • Ooize
    • HBase
    • Kudu
    • Sqoop
    • Hadoop-Streaming
    • Zeppelin
    • Alluxio
    • Kerberos
      • 集群互信配置
      • 概述
    • ClickHouse
      • 常见问题
      • 数据迁移同步
        • 从Spark导入
        • 从Kafka同步数据
        • 将自建ClickHouse数据迁移到云ClickHouse中
        • 从Flink导入
        • 从MySQL导入和同步
        • 从本地数据导入
          • Parquet格式
          • JSON
          • SQL转储
          • CSV and TSV
      • 快速入门
        • 访问模式
        • 客户端登录
        • 创建ClickHouse集群
        • 基础操作
      • 运维相关操作
        • ClickHouse集群扩容
        • ClickHouse集群缩容
        • 日志配置说明
        • 监控告警配置
    • Ranger
      • ranger概述
      • 权限策略配置
    • Paimon
      • Hive示例
      • StarRocks示例
      • 联合查询示例
      • Flink示例
      • Spark示例
    • Flink
      • 基础使用
    • Trino
      • 基础使用
      • 概述
    • Spark
      • 引擎增强
      • 基础使用
    • Hive
      • 开发指南
        • 自定义函数(UDF)
      • 实践操作
        • Hive迁移
        • Hive操作HBase外表
      • 基础使用
        • Hive基础操作
        • Hive连接方式
  • Java-SDK
    • Cluster(集群)
    • 异常
    • BmrClient
    • InstanceGroup(实例组)
    • 日志
    • 文档更新记录
    • 版本更新记录
    • Step(作业)
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
    • 概述
  • 快速入门
    • 操作流程概览
    • 环境准备
    • 创建集群
    • 数据准备
    • 开发作业
    • 查看结果
    • ClickHouse
      • 导入数据
      • 创建数据库
      • 连接集群
      • 创建表
  • 操作指南
    • 集群模板
    • 服务管理
    • 集群配置
      • 用户管理
      • 弹性伸缩
      • 创建集群
      • 集群安全模式
      • EIP
      • Hive元数据说明
      • 集群审计
      • 配置已有集群
      • 安全组
    • 管理作业
      • 创建作业
      • 诊断、调优
      • 定时任务
      • 查看作业
    • 访问集群
      • 访问集群服务页面
      • 访问集群-openVPN访问集群
      • 使用OpenVPN提交Hadoop作业
      • SSH连接到集群
    • 实践操作
      • 存储数据至HBase
      • 导入数据
      • 编译Maven项目
      • Sqoop导入导出数据
        • 导出数据
    • 权限管理
      • 多用户访问控制
      • 用户管理
    • 集群管理
      • 节点管理
      • 监控报警
      • 集群指标
      • 资源管理
  • 服务等级协议SLA
    • BMR服务等级协议SLA
  • API参考
    • 通用说明
    • 公共头
    • 数据类型
    • 版本更新记录
    • 服务域名
    • 实例操作接口
    • 实例组操作接口
    • 集群操作接口
    • API简介
    • 错误码
  • 常见问题
    • 安全性问题
    • 计费类问题
    • 常见问题总览
    • 性能类问题
    • 配置类问题
    • 故障类问题
  • 视频专区
    • 操作指南
    • 产品介绍
  • 场景教程
    • 流式应用场景
    • 离线应用场景
    • 使用Hive分析网站日志
    • Sqoop应用文档
    • 定时分析日志数据
    • HIVE
      • 不同集群的 Hive 迁移方案
      • Hive 操作 Hbase 外部表
  • 产品定价
    • 转换计费方式
    • 计费项
    • 到期或欠费说明
    • 包年包月计费
    • 续费说明
    • 变更配置计费说明
    • 计费方式
    • 按需计费
    • 账单和用量查询
    • 退款说明
  • 文档中心
  • arrow
  • MapReduceBMR
  • arrow
  • 开源组件介绍
  • arrow
  • ClickHouse
  • arrow
  • 常见问题
本页目录
  • 如何配置数据索引
  • 如何定时删除数据

常见问题

更新时间:2025-08-21

如何配置数据索引

ClickHouse是⼀款⾼性能的列式数据库,通过其独特的索引机制,实现了极⾼的查询效率和吞吐量。 ClickHouse中的索引类型丰富多样,每种类型适⽤于不同的场景。以下是ClickHouse中的主要索引类型及其选择策略:

一、主要索引类型

  1. 主键索引(Primary Key Index)
  • 定义:主键索引是最常⽤的索引类型之⼀,⽤于唯⼀标识每条记录。在ClickHouse中,主键索引可 以加速数据的查找和聚合操作。
  • 特点:主键索引由稀疏索引和段内数据排序组成。数据写⼊时按照主键排序(如果指定了ORDER BY),每次插⼊新的数据块时,ClickHouse会在磁盘上⽣成新的稀疏索引。每个稀疏索引条⽬对应 ⼀个数据块中的⾸⾏,索引条⽬记录该块的⾸个主键值以及其在数据⽂件中的位置。
  • 使⽤场景:适⽤于需要唯⼀标识记录的场景,如⽤户ID、订单号等。
  1. 排序键索引(Sorting Key Index)
  • 定义:排序键索引是根据指定的列对数据进⾏排序存储的索引类型。
  • 特点:在ClickHouse中,可以通过指定ORDER BY关键字来创建排序键索引。排序键索引与主键索 引密切相关,默认情况下主键与排序键相同。排序键索引可以加速按排序键进⾏查询和聚合操作。
  • 使⽤场景:适⽤于需要按特定列进⾏排序查询的场景,如按时间戳排序的事件⽇志查询。
  1. 辅助索引(Secondary Index,也称为跳数索引或数据跳过索引)
  • 定义:辅助索引⽤于加速查询列数据,提⾼查询效率。在ClickHouse中,辅助索引允许在查询时跳 过那些不相关的数据块,从⽽减少不必要的磁盘I/O。
  • 类型:
类型 类型说明
minmax索引 记录每个数据段的最⼩值和最⼤值。对于范围查询,如 WHERE column > x
AND column < y ,ClickHouse可以跳过不在范围内的块。
bloom_filter索引 ⽤于⾼基数的数据列,如字符串或ID字段。布隆过滤器可以快速过滤掉不
可能匹配的数据块。
tokenbf_v1索引 ⼀种适⽤于包含⼤量词汇的字段(如⽂本)的布隆过滤器索引,能够对包含
某个词的查询进⾏加速。
ngrambf_v1索引 基于n-gram的布隆过滤器索引,适⽤于需要精确匹配短字符串的场景。
set索引 记录每个数据段中特定列的唯⼀值集合,适⽤于精确匹配的场景。
inverted索引 倒排索引,适⽤于需要快速查找某个值在哪些数据块中存在的场景。
  • 使⽤场景:适⽤于列上具有⾼度稀疏性或数据分布不均匀的场景,以及需要加速范围查询、精确匹 配等操作的场景。
  1. 稠密索引(Dense Index)
  • 定义:稠密索引存储了每⼀条记录的索引信息,可以提⾼范围查询的速度。
  • 特点:与稀疏索引不同,稠密索引会为每⼀⾏数据都创建⼀个索引条⽬。虽然稠密索引在理论上可 以提供更快的查询速度,但由于其占⽤空间较⼤,且会增加数据插⼊、更新和删除的开销,因此在 ClickHouse中并不常⽤。
  • 使⽤场景:适⽤于数据分布稠密、需要频繁进⾏范围查询的场景,但考虑到其性能和空间开销,实 际应⽤中需谨慎使⽤。

二、索引选择策略

在选择ClickHouse的索引类型时,需要综合考虑多个因素,包括数据特点、查询需求、性能要求等。以下是⼀些建议:

  1. 根据查询需求选择索引类型:
  • 如果查询中经常涉及主键列的查找和聚合操作,应优先考虑使⽤主键索引。
  • 如果查询中经常需要进⾏范围查询,如按时间戳筛选数据,可以考虑使⽤minmax索引或稠密索引 (但需注意稠密索引的空间开销)。
  • 如果查询中涉及对⾼基数列(如字符串或ID字段)的精确匹配,可以考虑使⽤bloom_filter索引。
  1. 根据数据特点优化索引设计:
  • 避免在低基数(即值的数量很少)的列上创建索引,因为这样的索引往往效果不佳。
  • 当多个列经常⼀起⽤于查询条件时,可以考虑创建复合索引(通过ORDER BY⼦句指定多个列)。
  1. 控制索引的⼤⼩和数量:
  • 索引会占⽤额外的存储空间,并且会增加数据插⼊、更新和删除的开销。因此,在创建索引时要注 意控制索引的⼤⼩和数量,避免过度索引。
  • 可以通过设置 GRANULARITY 参数来控制索引的粒度,从⽽平衡索引的⼤⼩和查询性能,⼀般建 议⼤⼩为8192。
  1. 定期维护索引:
  • 随着数据的插⼊、更新和删除,索引可能会变得碎⽚化,导致查询性能下降。定期对索引进⾏维 护,如重建索引、合并索引等,可以保持索引的⾼效性。
  1. 结合使⽤多种索引类型:
  • 在某些复杂查询场景中,可能需要结合使⽤多种索引类型来达到最佳的查询性能。例如,在按时间 戳排序的事件⽇志查询中,可以同时使⽤主键索引(基于⽤户ID)和minmax索引(基于时间戳) 来加速查询。

综上所述,ClickHouse提供了多种索引类型以满⾜不同的查询需求和数据特点。在选择索引类型时,需要根据实际情况进⾏综合考虑和优化设计。

如何定时删除数据

定期删除是在建表语句的ttl里面定义,另外在配置里面也可以定义ttl的转存。

用这个语句定义 query_log的保存天数。示例:

Plain Text
1ALTER TABLE system.query_log
2MODIFY TTL event_time + INTERVAL 7 DAY;

上一篇
Kerberos
下一篇
数据迁移同步