问题描述
任务是解析数百 GB 的文件(数百万个小文件)并将它们插入到数据库中。 为了有效地完成这项工作,可以在大量进程之间拆分文件,以便每个进程处理一大块文件。
问题是数据库 (ClickHouse) 不支持唯一主键,并且应该处理重复项的 ReplacingMergeTree 表引擎不可靠。因此,应在插入之前处理重复项。
两个进程都遇到了类似的问题——一旦处理了一定数量的文件,它们就会花大部分时间等待对队列或共享集的访问。有一个特定的块大小集触发插入到数据库中。这是必要的,否则 RAM 会耗尽。一旦所有线程第一次达到该块大小,执行就会停止,因为从队列或共享集写入/读取无法跟上 30 多个进程处理文件的速度。
实现这一点的正确有效方法是什么
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)