我注意到在自动压缩设置为true
的情况下删除/恢复文档后,我的数据库大小正在增加。我做错了什么?
这是我的代码:
var db = new PouchDB("myDB", {adapter: "idb", auto_compaction: true});
var docs = [{_id: "0", name: "foo1"}, {_id: "1", name: "foo2"}];
db.bulkDocs(docs).then(function() {
db.allDocs({include_docs: true}).then(function(result) {
docs = result.rows.map(function(row) {
return row.doc;
});
};
};
function remove() {
for (var i in docs) {
docs[i]._deleted = true;
}
return db.bulkDocs(docs);
};
function restore() {
for (var i in docs) {
delete docs[i]._deleted;
delete docs[i]._rev;
}
return db.bulkDocs(docs);
}
// Calling this function increases the size of the DB
function test() {
return remove(docs).then(restore);
}
答案 0 :(得分:0)
答案 1 :(得分:0)
两件事:
1)即使您使用自动压缩,数据库大小也可能会增加,因为底层存储引擎可能有自己的怪癖。例如,如果您使用的是SQLite插件,则SQLite可能需要使用显式VACUUM
命令来减小大小。否则它会在感觉到它时减少磁盘大小。所以这取决于你如何测量尺寸。
2)即使您使用自动压缩,PouchDB也将始终存储旧版本的版本哈希。换句话说,它记录了文档的整个修订历史记录,通常由字符串哈希数组表示。在实践中,使用自动压缩,这意味着对于每个修订版本,数据库将增加类似'19136B05-18F9-CCBF-96C1-6AC11EE9B06E'
的字符串的大小。