unbutu安装clickhouse,并且远程连接,使用教程,原理
unbutu安装clickhouse,并且远程连接一. 安装1. 先更新 装依赖sudoaptupdatesudoaptinstall-yapt-transport-https ca-certificatescurlgnupg .## 2. 导入 ClickHouse 官方 GPG 密钥Ubuntu 22.04 推荐做法bashsudomkdir-p/etc/apt/keyringscurl-fsSLhttps://packages.clickhouse.com/rpm/stable/repodata/repomd.xml.key\|sudogpg--dearmor-o/etc/apt/keyrings/clickhouse.gpg3. 添加 ClickHouse 官方 APT 源echodeb [signed-by/etc/apt/keyrings/clickhouse.gpg] https://packages.clickhouse.com/deb stable main\|sudotee/etc/apt/sources.list.d/clickhouse.list4. 安装sudoaptupdatesudoaptinstall-yclickhouse-server clickhouse-client5. 启动 开机自启sudosystemctl start clickhouse-serversudosystemctlenableclickhouse-serversudosystemctl status clickhouse-server6. 本地连接测试clickhouse-client7. 设置 default 密码重要默认空密码sudovim/etc/clickhouse-server/users.xml找到password/password改成随便设一个password123456/password重启生效sudosystemctl restart clickhouse-server8. 开放远程连接默认只监听本机sudovim/etc/clickhouse-server/config.xml找到!--listen_host::/listen_host--改成listen_host0.0.0.0/listen_host保存退出重启sudosystemctl restart clickhouse-server二. dbserver 远程连接1. 下载驱动在项目pom 文件添加maven 依赖然后在maven 仓库之中找到坐标dependencygroupIdcc.blynk.clickhouse/groupIdartifactIdclickhouse4j/artifactIdversion1.4.4/version/dependency下面这个jar包就是驱动2. 配置dbserver#配置clickcc.blynk.clickhouse.ClickHouseDriverjdbc:clickhouse://{host}:{port}[/{database}]8123新建好后连接3. 使用建表CREATE TABLE IF NOT EXISTS device_data(device_id FixedString(32), time_stamp DateTime, preasure Float64, INDEX idx_device_id device_id TYPE minmax GRANULARITY1)ENGINEMergeTree()PARTITION BY toYYYYMM(time_stamp)ORDER BY(device_id, time_stamp)SETTINGS index_granularity8192;测试插入INSERT INTO device_data(device_id, time_stamp, preasure)VALUES(dev001,2025-05-14,1.25),(dev002,2025-05-15,2.33);测试查询SELECT * FROM device_data WHERE device_iddev001;三 调优硬件配置建议• 确保服务器硬件足够强大特别是磁盘 I/O、内存和 CPU。 • 使用 SSD 替代传统磁盘以提高磁盘读写速度。 • 考虑使用 NVMe 存储以更进一步提升 I/O 性能。查询优化• 使用合适的查询条件避免全表扫描。• 避免在大表上进行复杂的 JOIN 操作可以通过分布式计算将查询分解为多个小查询。• 合理利用 ClickHouse 的内置函数以减少数据传输和处理的开销。适当的集群规模• 考虑数据量和查询负载适当调整集群规模。• 在大规模集群中使用 Distributed 引擎以实现分布式查询。数据导入优化• 使用批量插入操作以提高数据导入速度。• 考虑使用异步数据导入避免实时要求。系统参数调优• 调整 ClickHouse 的配置参数例如缓存大小、线程数等以适应不同的硬件和工作负载。定期维护• 定期进行表的优化操作如 OPTIMIZE TABLE以减小存储空间并提高查询性能。• 定期进行系统统计信息的收集以帮助 ClickHouse 进行更好的查询计划优化。监控和日志• 设置监控和日志及时发现性能问题并进行调整。• 根据日志进行故障排查和性能分析。系统参数调优!-- config.xml --!-- 设置单个查询可以使用的最大线程数 --max_threads16/max_threads!-- 设置单个查询可以使用的最大内存量 --max_memory_usage10000000000/max_memory_usage!-- 在进行 GROUP BY 操作之前最大的数据大小超过这个大小将执行外部 GROUP BY --max_bytes_before_external_group_by10000000000/max_bytes_before_external_group_by!-- 在进行 ORDER BY 操作之前最大的数据大小超过这个大小将执行外部排序 --max_bytes_before_external_sort10000000000/max_bytes_before_external_sort!-- MergeTree 引擎执行合并操作的线程数 --merge_treemerge_threads4/merge_threads/merge_tree!-- MergeTree 引擎合并操作的块大小 --merge_treemerge_max_block_size10000000/merge_max_block_size/merge_tree!-- 查询日志的最大长度 --query_logmax_length1000000/max_length/query_log!-- 记录查询执行过程中的日志级别 --query_thread_loglog_level2/log_level/query_thread_log!-- 启用分布式聚合的内存优化 --settingsdistributed_aggregation_memory_efficient1/distributed_aggregation_memory_efficient/settings!-- 禁用压缩缓存 --settingsuse_uncompressed_cache1/use_uncompressed_cache/settingsmax_threads指定单个查询可以使用的最大线程数。• 调优建议根据服务器的 CPU 核数和负载情况适当设置 max_threads。在高负载情况下可以适当降低。max_memory_usage指定单个查询可以使用的最大内存量。• 调优建议根据服务器的可用内存和工作负载合理设置 max_memory_usage。避免设置得太大以防止系统因为内存不足而变得缓慢。max_bytes_before_external_group_by指定在进行 GROUP BY 操作之前最大的数据大小超过这个大小将执行外部 GROUP BY。• 调优建议根据 GROUP BY 操作的频率和数据量适当调整该参数。对于大数据量的 GROUP BY 操作考虑增大该值。max_bytes_before_external_sort指定在进行 ORDER BY 操作之前最大的数据大小超过这个大小将执行外部排序。• 调优建议根据 ORDER BY 操作的频率和数据量适当调整该参数。对于大数据量的 ORDER BY 操作考虑增大该值。merge_tree的merge_threads指定 MergeTree 引擎执行合并操作的线程数。• 调优建议根据服务器的 CPU 核数和硬盘 I/O 的能力适当调整 merge_threads。可以考虑增大该值以加速数据合并。merge_tree的merge_max_block_size指定 MergeTree 引擎合并操作的块大小。• 调优建议根据硬盘 I/O 和表分区的大小适当调整 merge_max_block_size。通常情况下增大该值有助于减小合并操作的开销。query_log_max_length指定查询日志的最大长度。• 调优建议根据日志记录需求适当调整 query_log_max_length。对于需要详细查询日志的场景可以增大该值。query_thread_log_level指定记录查询执行过程中的日志级别。• 调优建议在需要调试查询性能问题时将 query_thread_log_level 设置为较低的日志级别以获取更详细的查询执行信息。distributed_aggregation_memory_efficient启用分布式聚合的内存优化。• 调优建议对于涉及到分布式聚合操作的场景启用该参数以优化内存使用。use_uncompressed_cache禁用压缩缓存。• 调优建议在硬盘 I/O 足够快的情况下禁用压缩缓存可以提高查询性能。学习教程数据分区个多线程并行极致的并行处理能力同时也带来qps弱的问题单体查询不如多条查询瓶颈就是特别吃cpu单表查询速度远大于多表查询结构上不考虑多表查询ulimit -a 查询系统限制open files 打开的文件数max user processer 用户最大的进程数修改的位置 cd /etc/security/limits.conf第一列是用户和用户组 rootroot第二列 soft / hard soft 是软限制当前限制hard 是最大软的值要小于等于硬配置如下soft nofile 65536 # 打开的文件数量hard nofile 65536 # 打开的文件数量soft nproc 131072 # 打开的进程数量hard nproc 131072 # 打开的进程数量有的时候 系统的文件会被另外的文件覆盖 /etc/security/limits.d/20-nproc.conf 下对应的文件没有就创建生效命令。切换用户就好比如执行su 命令文档地址clickhouse.tech