提高写入效率的建议
1、提高网速。分布式系统的数据写入过程中有很多网络传输过程,建议至少万兆以太网,以避免网络延迟过高。
2、批量写入,不建议单条写入。因为单条记录写入也要把所有过程都进行一遍,延迟就会高,比如写log、打开一个事务、多个来回的网络传输等等,这些都是无法避免的开销,只有在写数据的那一步比批量写入花的时间稍微少一点,所以非常建议批量写入。目前c++、python、c# API均已经支持批量写入。
3、提高remoteexecutor的数量,默认是1。一个节点收到数据之后需要往各个节点发送数据,如果remoteexecutor等于1,则只有一个线程在发数据,所以可以通过增加remoteexecuto的数量,实现同时往多个节点并行地发送数据。
4、压缩数据。dolphindb提供了自动地数据压缩,对数据量比较大的情况会对数据块进行压缩,以减小网络带宽。
5、提前在客户端分割数据。在dfs下数据节点上会做将要写入的数据根据分区方法进行分组的操作,可以在客户端提前做以减少这部分开销。
6、批量异步写入。多线程批量处理,至少两个线程,一个线程不停地接收数据,维护一个队列,另一个线程从队列里不停地拿数据,写完以后又从队列里拿数据。
如有兴趣,可以参考另一个回答dolphindb数据写入详细过程,有助于理解如何优化写入性能。