Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
309 views
Welcome To Ask or Share your Answers For Others

1 Answer

提升写入性能的措施包括

一是采用多个客户端多线程并行写入,但要注意多个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/...


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...