大数据ClickHouse进阶(七):ClickHouse 数据查询

2022-09-18 00:46:50 浏览数 (3)

ClickHouse 数据查询

可以从官网下载官网提供的数据集hits_v1和visits_v1,对应的下载路径为:

https://datasets.ClickHouse.com/hits/partitions/hits_v1.tar

https://datasets.ClickHouse.com/visits/partitions/visits_v1.tar

下载之后对应两个压缩包:

代码语言:javascript复制
hits_v1.tar
visits_v1.tar

将以上两个压缩包进行上传到node1节点/softwar目录下,并解压到目录”/var/lib/ClickHouse”中。

代码语言:javascript复制
[root@node1 ~]# cd /software/
[root@node1 software]# tar xvf hits_v1.tar -C /var/lib/ClickHouse
[root@node1 software]# tar xvf visits_v1.tar -C /var/lib/ClickHouse

重启node1节点上的ClickHouse,查询数据:

代码语言:javascript复制
[root@node1 ~]# service ClickHouse-server restart
[root@node1 ~]# ClickHouse-client
node1 :) show databases;
┌─name─────┐
│ datasets │
│ default  │
│ system   │
└──────────┘

#查询表 hits_v1中的数据量
node1 :) select count(*) from datasets.hits_v1;
┌─count()─┐
│ 8873898 │
└─────────┘

#查询表 visits_v1中的数据量
node1 :) select count(*) from datasets.visits_v1;
┌─count()─┐
│ 1676861 │
└─────────┘

ClickHouse完全使用SQL作为查询语言,能够以Selete查询语句从数据库中查询数据,虽然ClickHouse拥有优秀的查询性能,但是我们也不能滥用查询,掌握ClickHouse支持的各种查询子句很有必要,使用不恰当的SQL语句进行查询不仅带来低性能,还可能带来系统不可预知的错误。例如:我们使用select * 查询数据时,通配符*对列式存储的ClickHouse没有一点好处,针对一张拥有133个列的数据表hits_v1,查询2000行数据时,使用*与不使用*速度相差几乎300倍:

代码语言:javascript复制
#使用*查询2000行数据
node1 :) select * from datasets.hits_v1 limit 2000;
2000 rows in set. Elapsed: 4.306 sec. Processed 2.00 thousand rows, 2.23 MB (464.50 rows/s., 518.76 KB/s.)

#不使用*查询2000行数据
node1 :) select WatchID from datasets.hits_v1 limit 2000;
2000 rows in set. Elapsed: 0.016 sec. Processed 2.00 thousand rows, 16.00 KB (126.48 thousand rows/s., 1.01 MB/s.)

此外需要注意,ClickHouse中对字段的解析大小写敏感,select a与select A表示的语义不同,下篇文章我们学习下ClickHouse中支持的查询语句,敬请期待。

0 人点赞