database - 无法启动 clickhouse 服务,../data/default/<TableName> 中的文件太多

标签 database clickhouse

我的独立 clickhouse-server 安装有一个奇怪的问题。服务器以几乎默认的配置运行了一段时间,除了数据和 tmp 目录被替换为单独的磁盘:

cat /etc/clickhouse-server/config.d/my_config.xml 
<?xml version="1.0"?> 
<yandex> 
  <path>/data/clickhouse/</path> 
  <tmp_path>/data/clickhouse/tmp/</tmp_path> 
</yandex>

今天服务器停止响应并出现连接被拒绝错误。重启后服务无法完全启动:

2018.05.28 13:15:44.248373 [ 2 ] <Information> DatabaseOrdinary (default): 42.86%
2018.05.28 13:15:44.259860 [ 2 ] <Debug> default.event_4648 (Data): Loading data parts
2018.05.28 13:16:02.531851 [ 2 ] <Debug> default.event_4648 (Data): Loaded data parts (2168 items)
2018.05.28 13:16:02.532130 [ 2 ] <Information> DatabaseOrdinary (default): 57.14%
2018.05.28 13:16:02.534622 [ 2 ] <Debug> default.event_5156 (Data): Loading data parts
2018.05.28 13:34:01.731053 [ 3 ] <Information> Application: Received termination signal (Terminated)

真的,我在 57% 时停止了进程,因为它开始的时间太长了(也许它可以在一两个小时后开始,我没试过)。

默认的日志级别是“trace”,但我没有说明这种行为的任何原因。

我认为问题在于/data/clickhouse/data/default/event_5156 中的文件计数。 现在它有 626023 个目录,而 ls -la 命令在这个目录中不能正常工作,我必须使用 find 来计算文件数:

#  time find . -maxdepth 1 | wc -l
626023

real    5m0.302s
user    0m3.114s
sys     0m24.848s

我有两个问题:

1)为什么Clickhouse-Server默认生成这么多文件和目录?

2)如何在足够的时间内启动服务而不丢失数据?

最佳答案

问题出在数据更新方法中。我将脚本与 jdbc 连接器一起使用,并且每个请求都发送一个字符串。改方案为批量更新后,问题解决。

关于database - 无法启动 clickhouse 服务,../data/default/<TableName> 中的文件太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50570871/

相关文章:

mysql - 如何定义top-3评级?

java - Lucene 搜索问题

database - 在postgresql中,导入csv文件后,序列号不同步

css - Laravel-在创建表单中检索旧值文本框

clickhouse - 如何在ClickHouse中获取FLAG的值

php - MySQL模式,哪种方式性能更高? M-N 关系还是将所有相关 ID 保存为字符串?

database - 如何发起 HTTP 请求从 ClickHouse 数据库中获取数据

mysql - 如何在数据库docker容器中创建数据库?

columnstore - 在 clickhouse 中是否可以直接通过插入查询存储 HyperLogLog/uniqState() 状态?