1.  启动并下载一个clickhouse-server, By default, starting above server instance will be run as default user without password.

docker run -d --name ch-server --ulimit nofile=262144:262144 -p 8123:8123 -p 9000:9000 -p 9009:9009 yandex/clickhouse-server
或者加一个Mount
docker run -d --name ch-server --ulimit nofile=262144:262144 -p 8123:8123 -p 9000:9000 -p 9009:9009  -v e:\\taobao:/usr/src/app/  yandex/clickhouse-server

2. 打开浏览器, 输入, 查询结果就下载下来

http://localhost:8123/?query=SELECT%20%27Hello,%20ClickHouse!%27

3. 进入docker 的CLI, server端安装在/etc/clickhouse-server 目录      用clickhouse-client来执行客户端命令

4. 通过csv导入数据, 把本地目录Mount 到/usr/src/app目录

clickhouse-client --query='INSERT INTO tblSale FORMAT CSV' < /usr/src/app/tblsale_in.csv

csv必须是逗号分隔,而且DateTime格式必须是不带毫秒的, 不然会有下面的错误

clickhouse-client --query='INSERT INTO tblSale FORMAT CSV' < /usr/src/app/tblsale_in.csv#
Code: 117. DB::Exception: Expected end of line: (at row 1) Row 1:
Column 0, name: id, type: UInt32, parsed text: "1"
Column 1, name: prod_id, type: UInt32, parsed text: "1"
Column 2, name: user_id, type: UInt32, parsed text: "1"
Column 3, name: cnt, type: UInt32, parsed text: "1"
Column 4, name: total_price, type: Float32, parsed text: "1.00"
Column 5, name: date, type: DateTime, parsed text: "2022-04-22 17:56:00"
ERROR: garbage after DateTime: ".783<CARRIAGE RETURN><LINE FEED>2,2,"
ERROR: DateTime must be in YYYY-MM-DD hh:mm:ss or NNNNNNNNNN (unix timestamp, exactly 10 digits) format. : While executing CSVRowInputFormat: data for INSERT was parsed from stdin: (in query: INSERT INTO tblSale FORMAT CSV). (INCORRECT_DATA)

我的数据是从SQLServer导出的, 可以用BCP导出指定逗号分隔

bcp "SELECT  [id],[prod_id],[user_id] ,[cnt],[total_price],Convert(varchar(20) , date, 120) as date FROM [taobao].[dbo].[tblSale_in]" queryout tblSale_in.csv -c -t , -T -S .\SQLExpress

当我导入的csv数据量很少时, 很快就成功了, 我再用有200w条数据时的csv, 执行这条命令是感觉就没有反应了.新打开一个CLI,进入 clickhouse-client 也没有反应了,不知道是否死掉了

等待5分种后,出现这个错误,

Code: 209. DB::NetException: Timeout exceeded while reading from socket (127.0.0.1:9000, 300000 ms). (SOCKET_TIMEOUT)

但是第2天再导入的时候就算导入2000w数据也很快, 在1分钟以内, 不知道什么原因

=========================以下是ClickHouse和SQLServer 2012的性能对比=====================================

硬件: THINKPAD470, I5CPU,8G内存,机械硬盘

--统计每日销量,2000w数据 SQLServer 17秒

SELECT Convert(varchar(8) , date, 112) as date,count(*) as dayCnt
FROM [taobao].[dbo].[tblSale] group by Convert(varchar(8) , date, 112)
order by Convert(varchar(8) , date, 112)
--按日统计数量, ClickHouse 2500w数据第一次用时8.35秒,第二次用时0.3秒
SELECT toYYYYMMDD(date), count(*) as dayCnt FROM tblSale
group by toYYYYMMDD(date) order by toYYYYMMDD(date)

继续导入2000w数据, 再用上面的SQL, clickhouse 4500w数据用时0.58秒, 6000w数据用时0.5秒 (第一次查询用1.24秒), 8000w数据用时0.68秒,1亿数据用时0.95秒

=================== 结论==================================

对于一般OLAP应用, 比如查用户的历史记录, 不要去搞分库分表, 那是条歪路,还是转到列数据库, 搞个大宽表, 尽量不要用Join, 单机都能达到这么高的性能.

ClickHouse 对付单表上亿条记录分组查询秒出, OLAP应用秒杀其他数据库的更多相关文章

  1. mongodb索引--1亿条记录的查询从55.7秒到毫秒级别<补充版>

    从头开始,验证mongodb的索引的好处.(window7环境下) 下载mongodb服务器,并解压到d盘,并使用以下命令启动 mongod --dbpath D:\mongodb\data mong ...

  2. 单表60亿记录等大数据场景的MySQL优化和运维之道

    此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据 ...

  3. 【转】单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

    此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据 ...

  4. [转载] 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

    原文: http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=209406532&idx=1&sn=2e9b0cc02bdd ...

  5. 清理8组nodes中表的历史数据,平均每个node中的表有1.5亿条记录,需要根据date_created字段清理8000W数据记录,这个字段没有索引。

    清理8组nodes中表的历史数据,平均每个node中的表有1.5亿条记录,需要根据date_created字段清理8000W数据记录,这个字段没有索引. 环境介绍  线上磁盘空间不足,truncate ...

  6. MySQL 快速构造一亿条记录的表

    在上一次朋友问我如何快速构造一亿条记录的表后,我理出了实行的办法,见:http://blog.csdn.net/mchdba/article/details/52938114,但是因为录入一亿表需要2 ...

  7. 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

    015-08-09 杨尚刚 高可用架构 此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美 ...

  8. 单表千亿电信大数据场景,使用Spark+CarbonData替换Impala案例

    [背景介绍] 国内某移动局点使用Impala组件处理电信业务详单,每天处理约100TB左右详单,详单表记录每天大于百亿级别,在使用impala过程中存在以下问题: 详单采用Parquet格式存储,数据 ...

  9. sql查询上一条记录和下一条记录

    上一条记录的SQL语句: * from news where newsid<id order by newsid DESC 下一条记录的SQL语句: * from news where news ...

随机推荐

  1. Error和Exception有什么区别?

    Error表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题:比如内存溢出,不可能指望程序能处理这样的情况:Exception表示需要捕捉或者需要程序进行处理的异常, ...

  2. Kafka消息是采用Pull模式,还是Push模式?

    Kafka最初考虑的问题是,customer应该从brokes拉取消息还是brokers将消息推送到consumer,也就是pull还push.在这方面,Kafka遵循了一种大部分消息系统共同的传统的 ...

  3. kafka follower如何与leader同步数据?

    Kafka的复制机制既不是完全的同步复制,也不是单纯的异步复制.完全同步复制要求All Alive Follower都复制完,这条消息才会被认为commit,这种复制方式极大的影响了吞吐率.而异步复制 ...

  4. elasticsearch 是如何实现 master 选举的 ?

    面试官:想了解 ES 集群的底层原理,不再只关注业务层面了. 前置前提: 1.只有候选主节点(master:true)的节点才能成为主节点. 2.最小主节点数(min_master_nodes)的目的 ...

  5. 运筹学之"概率"和"累计概率"和"谁随机数"

    概率 = 2/50 = 0.2 累计概率 = 上个概率加本次概率 案例1 概率=销量天数 / 天数 = 2 /100 = 0.02 累计概率 = 上个概率加本次概率 = 0.02 +0.03 = 0. ...

  6. 002.MEMS应用在开关电源上,实现大功率超小型化

    设计任务书 1.有关MEMS还有待具体了解 2.有关开关电源的目前难题也需要了解

  7. 两个echarts地图联动高亮区域

    项目要求左右两张地图能够在鼠标悬浮的时候高亮部分联动,曾尝试了connect不好使,所以自己写了这段代码.代码思路为: 鼠标移入地图时,另一侧的地图根据鼠标悬浮获取到的区域name使该区域高亮: 鼠标 ...

  8. java中抽象类和抽象方法到底什么关系?请举例说明!

    抽象类和抽象方法什么关系?抽象类中可能有抽象方法,也可能没有抽象方法.那位说,就跟没说一样,那抽象类和抽象方法都叫抽象,他们必定有关系,那关系是什么呢?如果一个类中有抽象方法,它必须得是抽象类. An ...

  9. LINUX执行shutdown.sh提示:-bash: ./startup.sh: Permission denied

    在执行./startup.sh,或者./shutdown.sh的时候,爆出了Permission denied, 其实很简单,就是今天在执行tomcat的时候,用户没有权限,而导致无法执行, 用命令c ...

  10. YC-Framework版本更新:V1.0.6

    分布式微服务框架:YC-Framework版本更新V1.0.6!!! 本文主要内容: V1.0.6版本更新主要内容 V1.0.6版本更新主要内容介绍 一.V1.0.6版本更新主要内容 1.系统例子覆盖 ...