【问题标题】:sqlite3 vacuum,How to use on cordova APPsqlite3 Vacuum,如何在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 的东西吗? (记住它是一个移动应用程序)

【问题讨论】:

    标签: android cordova sqlite vacuum


    【解决方案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。谢谢你的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多