FMDatabase增量真空

时间:2016-07-12 20:29:39

标签: ios sqlite fmdb

如何使用FMDatabase实现SQLite数据库的增量抽真空?

纯sqlite中的等价物是在一个批量大小的循环中准备语句" PRAGMA incremental_vacuum",sqlite_step,并最终确定语句。然后重复,直到所有页面都被抽真空。

这如何与FMDatabase一起使用?

1 个答案:

答案 0 :(得分:2)

我找到的解决方案是在循环中执行此语句,直到batchAmount为0:

[database executeStatements:[NSString stringWithFormat:"PRAGMA incremental_vacuum(%d);", batchAmount]];

不起作用的方法:

  • "PRAGMA incremental_vacuum(:BatchAmount)"与参数字典条目一起使用" BatchAmount"导致SQLite语法错误。
  • 调用executeUpdate:导致FMDatabase错误,因为" PRAGMA"意味着它是一个查询。
  • 调用executeQuery:对文件大小没有影响。