有什么措施可提升DolphinDB的写入和查询性能
假如目前部署了DolphinDB database4个计算节点,要让4个节点的性能发挥到最大,有什么措施和建议?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
假如目前部署了DolphinDB database4个计算节点,要让4个节点的性能发挥到最大,有什么措施和建议?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
提升写入性能的措施包括:
一是采用多个客户端多线程并行写入,但要注意多个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/...