在调整LevelDB存储的插入时,需要考虑的首要因素是什么?在
我在表格中插入500万条以上的记录:
使用python plyvel进入LevelDB存储,随着记录数量的增加,速度急剧下降。我想这是意料之中的,但有没有调整措施,我可以看看,使其规模更好?在
示例代码:
import plyvel
BATCHSIZE = 1000000
db = plyvel.DB('/tmp/lvldbSNP151/', create_if_missing=True)
wb = db.write_batch()
# items not in any key order
for key, value in DBSNPfile:
wb.put(key,value)
if i%BATCHSIZE==0:
wb.write()
wb.write()
我试过各种不同的批量大小,这对bit有帮助,但我希望还有一些东西我错过了。例如,可以利用知道键(或值)的最大长度吗?在
(作者:普利维尔)
LevelDB按排序顺序保存所有数据库项。由于您是以随机顺序编写的,这基本上意味着数据库的所有部分都会被重写,因为LevelDB必须合并sst(这在后台发生)。一旦您的数据库变得更大,并且您不断地向其中添加更多的项,这将导致写入吞吐量的降低。在
我怀疑,如果您的写操作有更好的位置,性能不会下降得那么严重。在
其他值得尝试的想法有:
write_buffer_size
max_file_size
block_size
进行实验.write_batch(sync=False)
以上内容都可以从Python使用额外的关键字参数来使用}方法。有关详细信息,请参阅api docs。在
plyvel.DB
和{相关问题 更多 >
编程相关推荐