有什么措施可提升DolphinDB的写入和查询性能

假如目前部署了DolphinDB database4个计算节点,要让4个节点的性能发挥到最大,有什么措施和建议?

请先 登录 后评论

1 个回答

logger


提升写入性能的措施包括


一是采用多个客户端多线程并行写入,但要注意多个writer不能同时往同一个分区写入。


二是启用RedoLog功能和写入数据缓存(CacheEngine)功能,这个采用同步写入确保数据安全,也就是说只有元数据和RedoLog刷入磁盘后,才返回结果给客户端。如用于研究等非生产环境,也可采用异步写入,写入的延迟和吞吐量可以进一步改进。


三是批量写入,每次写入数据量不宜过小,一般每次数据量写入在几十兆字节比较合适。


四是每次写入数据涉及的分区数据量不宜过多。DolphinDB按照分区来列式存储,比如每次写入1000分区10列,那么每次需要写10000(1000*10)个文件,会严重影响写入性能。


提升查询性能的措施包括


合理的分区设计非常重要。以量化金融领域为例,一般用时间和产品标识两个维度来进行分区。时间维度可按天、按月等进行分区,具体选哪个需要根据数据量和典型查询场景进行具体分析和设计。产品标识维度的分区可以采用哈希、范围、值、列表等多种方法,原则就是要根据业务特点对数据进行均匀分割。DolphinDB不提供行级的索引,而是将分区作为数据库的物理索引。因此每个分区的数据量不宜过大。一般我们建议一个表在一个分区的数据量在100MB左右。


在集群部署方面,合理的参数配置,使系统均衡合理的使用这些资源,能充分发挥机器的性能:


cpu:配置workerNum和localExecutors,workerNum和localExecutors直接决定系统并发处理能力,应多个数据节点平均分配,尽可能利用主机所有的cpu并发处理能力。


内存:配置节点使用的最大内存量maxMemSize。内存对于改进计算节点的性能非常明显,尽可能高配。但要根据物理内存的大小来调整,否则操作系统内部内存不足时,会杀死进程。


磁盘:配置两种不同的硬盘,将元数据、RedoLog等数据库日志写入容量较小但性能较高的固态硬盘或者高性能IO设备;将海量数据写入容量较大的机械硬盘。不同的数据节点配置不同的磁盘,每个数据节点挂载多卷(volumes),以并行利用多个磁盘的I/O接口。


网络:服务器之间用万兆网卡连接,提高网络性能。


相关参数的详细描述请参阅https://github.com/dolphindb/...


请先 登录 后评论