/etc/clickhouse-server/config.xmlmax_server_memory_usage 服务器进程的最大内存使用量,限制服务器的总内存使用
memory_amount(内存总量) * max_server_memory_usage_to_ram_ratio(占比分数值)max_server_memory_usage_to_ram_ratio 用来计算 max_server_memory_usage 的值。
max_server_memory_usage_to_ram_ratio大于 1。/etc/clickhouse-server/users.xmlmax_memory_usage_for_user 用于在单个服务器上运行用户查询的最大 RAM 量。
max_memory_usage 用于在单个服务器上运行查询的最大 RAM 量。
max_bytes_before_external_group_by 启用或禁用GROUP BY外部存储器(磁盘)中子句的执行
GROUP BY在外部存储器中禁用。GROUP BY操作可以使用的最大 RAM 容量(以字节为单位)max_memory_usage为 max_bytes_before_external_group_by 两倍的内存。这是必要的,因为聚合有两个阶段:读取数据并形成中间数据(1)和合并中间数据(2)。只能在第 1 阶段将数据转储到文件系统。如果未转储临时数据,则第 2 阶段可能需要与第 1 阶段相同的内存量。distributed_aggregation_memory_efficient为 1。distributed_aggregation_memory_efficient启用该设置时合并来自远程服务器的结果时,最多消耗1/256 * the_number_of_threadsRAM 总量。max_bytes_before_external_group_by(即数据未刷新),则查询运行速度与没有外部聚合时一样快。如果刷新了任何临时数据,则运行时间将延长几倍(大约三倍)。max_bytes_before_external_sort
ORDER BY在外部存储器中禁用。/var/lib/clickhouse/tmp/ 目录中的配置(默认情况下,但你可以使用 tmp_path 参数来更改此设置)。distributed_aggregation_memory_efficient 是否启用分布式聚合的内存节省模式。
insert_deduplicate 数据复制表引擎中 数据块被重复数据删除。对于同一数据块的多次写入(相同大小的数据块包含相同顺序的相同行),该块只被写入一次。这样做的原因是当客户端应用程序不知道数据是否已写入数据库时发生网络故障,因此可以简单地重复 INSERT 查询。将相同数据发送到哪个副本 INSERT 并不重要。INSERT 是幂等的。重复数据删除参数由 merge_tree 服务器设置控制。 insert_deduplicate 对于复制表中的 INSERT 查询,指定应执行插入块的重复数据删除。 默认是启用去重,日志会出现Block with ID xx already exists locally as part xx ; ignoring it
max_insert_threads 执行INSERT SELECT查询的最大线程数。 值为0或1表示INSERT SELECT不是并行运行的。 更高的值将导致更高的内存使用。 只有当SELECT部分是并行运行时,并行INSERT SELECT才有效,请参阅’max_threads’设置。
parallel_distributed_insert_select 在同一个集群中,在每个shard的本地表上处理分布式的INSERT SELECT查询; 如果设置为1 -在每个shard上执行SELECT; 如果设置为2,则在每个shard上执行SELECT和INSERT
insert_distributed_sync 默认情况下,向Distributed表中插入数据时,ClickHouse 服务器以异步方式向集群节点发送数据。当 时insert_distributed_sync=1,数据是同步处理的,只有在所有分片上保存所有数据(如果为真INSERT,每个分片至少有一个副本),操作成功。
async_insert_threads 在后台实际解析和插入数据的最大线程数。0表示禁用异步模式
async_insert 如果为true, INSERT查询中的数据将存储在队列中,然后在后台刷新到表中。只有通过HTTP协议插入才有意义。如果wait_for_async_insert为false,则INSERT查询几乎立即被处理,否则客户端将等待数据刷新到表中
wait_for_async_insert如果为真,则等待异步插入处理
show settings ilike '%distributed_aggregation_memory_efficient%';
select * from `system`.settings s where name in(
'max_memory_usage_for_user',
'max_memory_usage',
'max_bytes_before_external_group_by',
'max_bytes_before_external_sort',
'max_memory_usage_for_all_queries',
'max_concurrent_queries_for_user',
'max_concurrent_queries_for_all_users',
'max_concurrent_queries',
'max_server_memory_usage',
'max_server_memory_usage_to_ram_ratio',
'max_thread_pool_size',
'distributed_aggregation_memory_efficient'
);