从iOS中的数据库中删除一些行后,Sqlite文件大小没有减少

时间:2016-03-04 03:05:37

标签: ios sqlite

我正在以编程方式尝试在删除某些行后检查存储在iphone上的SQLite数据库的大小。记录被删除,但文件大小保持不变。从iOS中的sqlite删除记录后,有什么方法可以获得正确的文件大小?请参阅以下代码:

NSString* databasePath = [[NSString alloc]
                              initWithString: [self.documentsDirectory stringByAppendingPathComponent: self.databaseFilename]];
unsigned long long fileSize = [[[NSFileManager defaultManager]
                                    attributesOfItemAtPath:databasePath error:nil] fileSize];

谢谢!

我无法使用真空方法,因为它会删除所有记录。我只删除50%的数据,而不是全部。所以这不是这个问题的重复 change sqlite file size after "DELETE FROM table"

1 个答案:

答案 0 :(得分:3)

删除记录时,SQLite数据库文件的大小不一定会缩小。如果未启用auto_vacuum,除非您对其执行真空操作,否则永远不会收缩。

请参阅https://sqlite.org/lang_vacuum.htmlhttps://sqlite.org/pragma.html#pragma_auto_vacuum