【问题标题】:Sqlite File Size not decreasing after deleting some rows from database in iOS在 iOS 中从数据库中删除某些行后,Sqlite 文件大小不会减小
【发布时间】:2016-03-04 11:16:54
【问题描述】:

我正在以编程方式尝试在删除一些行后检查存储在 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];

谢谢!

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

【问题讨论】:

  • 文件大小不减小是正常的。数据库将根据需要回收空间。如果你想强制它重写一个更小的文件,运行vacuum。
  • Thilo,我只删除了一些记录,而不是所有记录。真空有助于删除所有记录。
  • Vacuum 不会删除任何数据。它只是压缩用于存储它的空间(可能会导致更小的文件)。

标签: ios sqlite


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 2013-01-07
    • 2021-06-26
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多