测试过程中,发现在做大表 count 的时候,会出现 count 执行后,结果返回了 count 条目数,但是查询仍然没有结束,还停留在 Progress 界面,等待十几秒仍然不会结束。正常 ClickHouse 的 count 是很快的,1亿数据的count 都在1秒之内返回。
→ Progress: 100.26 million rows, 1.70 GB (97.33 million rows/s., 1.65 GB/s.) (5.3 CPU, 122.17 MB RAM)█████████████████████████████████████████████████████████▋ 98%
在后台看了一下整个服务器的负载也不高,基本除了 CK 之外没有别的进程在执行。由于我这台机器上还运行一套 GPDB,所以猜测是不是内存缓存的事,于是执行如下语句临时清空缓存。

echo 1 > /proc/sys/vm/drop_caches
执行完后,清理掉部分缓存,重新执行发现速度明显提升了。
至于问题原因,猜测是 CK 执行时需要使用内存缓存,空间不够导致无法存放结果。当然我对 CK 了解的还不多,具体里面的细节就解释不清楚了。
End~