DolphinDB server不支持多个线程并发写入同一个分区,否则会写入失败。因此对于分区表多线程并发写入,为了避免冲突,MultithreadedTableWriter需要保证一个分区只能一个线程同时写入,需要合理设置其构造函数的threadCount 和partitionCol 这2个参数。对于按时间+产品标识组合分区的分区表,threadCount一般设为其产品标识分区数,比如上述dfs://iot数据库就设为10,partitionCol 设为产品标识分区字段名;
vector<COMPRESS_METHOD> compress; compress.push_back(COMPRESS_DELTA); compress.push_back(COMPRESS_LZ4); compress.push_back(COMPRESS_DELTA); compress.push_back(COMPRESS_LZ4); compress.push_back(COMPRESS_LZ4); compress.push_back(COMPRESS_LZ4); compress.push_back(COMPRESS_LZ4); compress.push_back(COMPRESS_LZ4); compress.push_back(COMPRESS_LZ4); compress.push_back(COMPRESS_DELTA); compress.push_back(COMPRESS_DELTA); compress.push_back(COMPRESS_LZ4); compress.push_back(COMPRESS_LZ4); MultithreadedTableWriter writer("127.0.0.1", 8848, "admin", "123456", "dfs://iot", "readings",false, false, NULL, 10000, 1, 10, "device_id", &compress);