当前位置: 首页 > 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只需要两三秒了,数据量是三千多万。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 了解 React 应用程序中的渲染和重新渲染:它们如何工作以及如何优化它们
  • 『功能项目』战士职业平A怪物掉血【44】
  • 动态规划---不同的子序列
  • 一次RPC调用过程是怎么样的?
  • NLP与文本生成:使用GPT模型构建自动写作系统
  • 软件无线电2:矢量信号器和HackRF实现FM调制解调
  • 32.递归、搜索、回溯之floodfill算法
  • com.microsoft.sqlserver:sqljdbc4:jar:4.0 was not found产生原因及解决步骤
  • Zabbix的安装与基本使用(主机群组、应用集、监控项、触发器、动作、媒介)
  • C++设计模式(更新中)
  • Linux 常用指令
  • 苹果Vision Pro曝出严重漏洞,黑客可通过用户眼动输入窃取信息
  • vue之我不会
  • Pytest配置文件pytest.ini如何编写生成日志文件?
  • (PySpark)RDD实验实战——取最大数出现的次数
  • 230. Kth Smallest Element in a BST
  • AngularJS指令开发(1)——参数详解
  • ES6核心特性
  • mysql 5.6 原生Online DDL解析
  • SpringCloud集成分布式事务LCN (一)
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • vue-cli3搭建项目
  • 数组大概知多少
  • 学习HTTP相关知识笔记
  • 赢得Docker挑战最佳实践
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 选择阿里云数据库HBase版十大理由
  • ​2020 年大前端技术趋势解读
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • ## 基础知识
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • $.ajax()参数及用法
  • (39)STM32——FLASH闪存
  • (52)只出现一次的数字III
  • (第一天)包装对象、作用域、创建对象
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (九)信息融合方式简介
  • (数据结构)顺序表的定义
  • (四)React组件、useState、组件样式
  • (一)Dubbo快速入门、介绍、使用
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .gitignore文件—git忽略文件
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net通过类组装数据转换为json并且传递给对方接口
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [100天算法】-二叉树剪枝(day 48)
  • [2016.7 test.5] T1
  • [android] 天气app布局练习
  • [Angularjs]asp.net mvc+angularjs+web api单页应用