数据岗位面试题更新 2026-08-05

请列举 ClickHouse 支持的主要数据类型,并说明在实际场景中应依据哪些原则或条件来挑选最合适的数据类型?

数据技术原理技术选型ClickHouse

考察说明

考查对 ClickHouse 数据类型体系的掌握以及根据业务场景合理选型的能力。

回答思路

  1. 【回答框架 1】ClickHouse 数据类型主要分为基础类型与复合类型。基础类型包括整数(Int8/16/32/64 及无符号 UInt 系列)、浮点数(Float32/64)、Decimal 定点数、字符串(String/FixedString)、日期时间(Date/DateTime/DateTime64)、布尔类型(没有原生 Bool,通常用 UInt8 或枚举替代)以及 UUID 等。
  2. 【回答框架 2】复合类型包括数组 Array、元组 Tuple、映射 Map、枚举 Enum、嵌套结构 Nested、聚合类型 AggregateFunction 以及低基数类型 LowCardinality 等。每种类型都有特定存储与计算特性,选型需基于数据类型、取值规模、精度要求和查询模式。
  3. 【回答框架 3】选型原则:整数按取值范围选择最小宽度,避免溢出与浪费存储;浮点数默认用 Float64,但需精度计算或金额时用 Decimal 并指定精度与标度;字符串常用 String,若长度固定可用 FixedString,但长度变化无常时避免 FixedString 浪费空间。
  4. 【回答框架 4】日期时间按精度选型:仅精确到天用 Date,精确到秒用 DateTime,需要亚秒用 DateTime64;如需时区处理则配合相应时区参数。枚举适合状态等有限取值,可节省空间并提升可读性。
  5. 【回答框架 5】针对高基数或字典编码场景,可考虑 LowCardinality 优化常见重复字符串;数组、 Map、元组等复合类型用于表达嵌套结构。选型时还应考虑排序键、索引和分区字段的数据类型,保证存储紧凑且查询高效。
  6. 【关键点 1】按数据取值范围和精度选择整数类型,避免过大浪费空间或不足导致溢出。
  7. 【关键点 2】金额或需要精确十进制计算的场景必须使用 Decimal,而非浮点类型。
  8. 【关键点 3】日期时间根据实际精度需求选择 Date、DateTime 或 DateTime64。
  9. 【关键点 4】固定长度短字符串可用 FixedString,长度可变时优先 String,避免存储浪费。
  10. 【关键点 5】低基数重复字段可考虑 LowCardinality 提升压缩与查询性能,复合类型用于嵌套或集合场景。
  11. 【易错点 1】不要简单将浮点数用于金额计算,会引入精度误差。
  12. 【易错点 2】FixedString 对长度变化大的字符串会浪费大量空间,适合长度固定不变的数据。
  13. 【易错点 3】忽略数据类型对排序键、索引和压缩效率的影响,可能造成性能下降。