sqlite3 Vacuum,如何在cordova APP上使用

Posted

技术标签:

【中文标题】sqlite3 Vacuum,如何在cordova APP上使用【英文标题】:sqlite3 vacuum,How to use on cordova APP 【发布时间】:2017-10-06 17:15:48 【问题描述】:

我在使用 VACUUM 命令从删除的 SQL 语句中释放内存时遇到了一个大问题。

我正在制作一个 Cordova android 应用程序,我知道当我使用 DELETE SQL 语句时,应用程序的空间不会关闭,...空间像碎片硬盘一样持续存在。

然后,我看到 VACUUM 可以压缩我的数据库,但我有一个问题!

我使用 SQLite3,所有站点中的 VACUUM 都说不能在事务中执行,如下所示:

var db = window.sqlitePlugin.openDatabase(name:"maintenance", location:'default');
db.transaction(function (tx) 
   tx.executeSql('VACUUM', [], function (tx, results) 
      alert('done');
 , function (tx, error) 
      alert('error');
      alert(error.message);
   );
);

好的,那么,如果我不能在事务中做,你能告诉我如何在不写行命令的情况下执行真空或自动真空或类似压缩 BD 的东西吗? (记住它是一个移动应用程序)

【问题讨论】:

【参考方案1】:

根据the GitHub Page,您应该能够在db.executeSql 的事务之外执行SQL:

db.executeSql("VACUUM", [], function(rs) 
    // ok
, function(err) 
    // handle error
);

【讨论】:

您好,感谢您的帮助,我在交易中使用它。 ok 块中的消息“VACUUM DONE”显示,但没有结果。应用程序的数据大小在vacuum之后和之前是相同的。 @Armando 您要删除多少数据? SQLite 以页面大小的倍数分配空间,因此如果您只删除几行,它不会释放足够的空间来释放页面。 没错!我在 bbdd 表中插入了 40000 行,安装时我的应用程序数据大小为 484KB,40k 行为 2.18MB。然后用真空将我的数据大小降低到 500KB。谢谢你的帮助:)

以上是关于sqlite3 Vacuum,如何在cordova APP上使用的主要内容,如果未能解决你的问题,请参考以下文章

[转载]SQLite3性能优化

sqlite3 性能测试 - 如何快速重置/清除缓存

sqlite 删除数据后文件size并不会减小,解决办法:

qt操作sqlite 如何使用vacuum命令?

如何从使用 pg_cron 运行的清除例程中链接 VACUUM?

如何 VACUUM 一个 Core Data SQLite 数据库?