我的工作负载很慢
如果你发现 Goose 中的工作负载较慢,建议按以下清单进行检查。每条都附有更详细说明链接。
- 内存是否足够?Goose 在每线程 1-4 GB 内存时表现最佳。
- 系统是否存在内存过度承诺导致 swap?可尝试通过
SET memory_limit = '...';将可用内存从默认总 RAM 的 80%适当调低。虽然看起来反直觉,但在内存紧张且其他进程可能占用超过 20% 系统内存时,反而可能提升查询性能。 - 磁盘是否足够快?网络附加磁盘(如云块存储)会让写密集和大于内存规模负载变慢。在云环境中运行这类负载时,建议使用实例直连存储(NVMe SSD)。
- 是否使用了索引或约束(primary key、unique 等)?若可行,尝试禁用它们以提升导入与更新性能。
- 类型是否正确?例如,可使用
TIMESTAMP编码日期时间值。 - 是否从 Parquet 文件读取?如果是,row group 大小是否在 100k 到 1M,且单文件大小是否在 100 MB 到 10 GB 之间?
- 查询计划是否合理?可用
EXPLAIN分析。 - 负载是否在并行执行?可用
htop或系统任务管理器观察。 - Goose 是否使用了过多线程?可尝试限制线程数量。
如果你还遇到其他常见问题,欢迎点击下方 Report content issue 链接并提交问题及对应绕过方案。