当前位置: 首页 > news >正文

Clickhouse使用笔记

clickhouse官方文档:https://clickhouse.com/docs/zh/sql-reference/data-types/decimal
一,建表

create table acitivity_user_record
(
id String DEFAULT generateUUIDv4(), -- 主键自增
activityId String,
userId String,
userName Nullable(String),
phoneNumber Nullable(String),
companyName Nullable(String),
companyAddr Nullable(String),
`source` Nullable(String),
`platform` Nullable(String),
addDate UInt64,
addDateTime DateTime64(3)
)
engine = ReplacingMergeTree PARTITION BY activityId
PRIMARY KEY (id)
ORDER BY (id, addDateTime, activityId)
SETTINGS index_granularity = 8192;

(1)表引擎
ReplacingMergeTree 具有去重功能,数据存储在磁盘上
Memory引擎数据可能会重复,数据存储在内存中,查询会更快,但是数据容易丢失,如果服务器挂掉,数据就丢失了。
在idea使用表的拷贝功能,将表从一个库拷贝到另一个库的时候,表引擎自动变为memory,服务器重启数据就丢失了。
如果不指定PRIMARY KEY会把order by指定的字段作为主键
order by用于对分区内的数据进行排序

二,遇到的一些问题
1,语法上和mysql,sqlserver上有差异
1,分区字段,排序字段不支持update,只能删除再插入
2,Nullable类型的字符串字段,很多字符串的函数不能用,嗯,试试就知道了
3,clickhouse在进行算数运算和比较运算时默认会进行精度检查
例如decaimal类型相乘,
例如amout和tax_cost_price都是Decimal(18,6) 类型的,amout*tax_cost_price相乘之后小数部分位数会相加,变成Decimal(18,12),精度溢出报错
在这里插入图片描述
得先进行精度转换multiply(toDecimal64(sbd.amount, 5), toDecimal64(sbd.tax_cost_price, 5)
检查溢出会导致计算变慢。如果已知溢出不可能,则可以通过设置decimal_check_overflow来禁用溢出检查,在这种情况下,溢出将导致结果不正确,官方文档里描述的很详细,还有示例
4,clickhouse多表关联查询时性能很差,之前在查销售流向的时候使用了五张表进行关联查询,其中两张销售表的数据量特别大,进行关联聚合查询时执行了1分多钟,改为子查询之后执行时间只需要六七秒。
线上之前用sqlserver需要14~17s的查询,改成clickhouse只需要两三秒了,数据量是三千多万。

http://www.lryc.cn/news/438901.html

相关文章:

  • 基于高通主板的ARM架构服务器
  • AV1 Bitstream Decoding Process Specification--[2]:符号和缩写术语
  • 【Python爬虫系列】_022.异步文件操作aiofiles
  • GD32E230 RTC报警中断功能使用
  • C/C++语言基础--从C到C++的不同(上)
  • 自动驾驶自动泊车场景应用总结
  • redis常见的数据类型?
  • TCP Analysis Flags 之 TCP ZeroWindow
  • [产品管理-16]:NPDP新产品开发 - 14 - 产品创新流程 - 产品创新流程模型比较:门径、IPD、精益生产、敏捷、系统工程、设计思维、精益创业
  • postgresql 导出CSV格式数据
  • 【C++】STL--string(上)
  • 【C++】Stack
  • “药乡”怀化,按下产业向海“加速键”
  • 【AWDP】 AWDP 赛制详解应对方法赛题实践 量大管饱
  • 读构建可扩展分布式系统:方法与实践05分布式缓存
  • 【逐行注释】自适应Q和R的AUKF(自适应无迹卡尔曼滤波),附下载链接
  • OpenCV高阶操作
  • Vue中的防抖和节流是什么,它们的作用是什么?
  • C++的类与对象中(主讲默认成员函数)
  • C#学习系列之Gmap地图界面上的实时绘制问题
  • Spring Boot中实现定时任务的主要方式
  • C#使用HttpWebRequest下载文件
  • Linux: virtual: qemu-kvm: top cpu usage的组成是否包含guest的使用?
  • 【03】深度学习——神经网络原理 | 多层感知机 | 前向传播和反向传播 | 多层感知机代码实现 | 回归问题、分类问题 | 多分类问题代码实现
  • MySQL行锁的实践
  • iOS 18 將在 9 月 16 日正式上線
  • css选择器有几种?选择器的优先级是怎样的?
  • 果蔬识别系统性能优化之路(四)
  • kafka之protobuf
  • BARTBERT