背景是这样的,在研究 caffe 的时候,想把数据写到 lmdb ,有这么一段代码:
for (){
// read data
if (++count % 1000 == 0) {
txn->Commit();
}
}
// write the last batch
if (count % 1000 != 0) {
txn->Commit();
如果我换成一次提交,持久化到磁盘的文件是不一样的。
试了每 10 次提交一回,每 100 次提交一回,每 1000 次提交一回,都不一样。但是读出来以后数据又是一样的。
请问这是为什么呢?我想要深入的明白为什么,还需要了解哪些知识?
先谢谢各位 v2 的大神
1
htfy96 2016-10-03 16:27:28 +08:00 via Android 1
数据库会倾向于把一次写的东西压成一块,所以具体写入的内容可能不一样。
数据一样是当然的,否则就破坏了语义。 换成 100 提交一回可能的结果是不太容易丢数据,但慢一些 |