我在部署到docker实例时遇到了一些disk problems,但我还不知道如何解决它。
在docker实例中,有一个进程使用Shove和sqlite作为后端,将数据作为字典保存到磁盘(我节省了大约200,000条记录)。
出现问题是因为我使用Shove作为要保存的字典,这使得每个__setitem__
操作都成为sqlite中的插入。
现在Shove提供了一个sync
(一个整数)参数来指定何时将实际存储执行到磁盘中,但这只会在内存中保存一个临时字典,并且到时候它仍然会使{ {1}}操作到磁盘(我不想要)。
我检查过sqlite提供了executemany
操作,它应该减少方法调用开销,但它是否真的对磁盘执行了1次(或至少接近1次)操作?我似乎无法为此找到明确的解释。
我还检查过bulk operation could be done on sqlite,但是没有在python上解释,所以我应该用sync
调用它并创建一个非常大的字符串? (我希望能够一次至少保存1000条记录。)
那么用最少量的操作写入磁盘的最佳方法是什么?