From a386f1fc9e562a5980b737dfb2a7d13abb775da6 Mon Sep 17 00:00:00 2001
From: Nelson Chan <3271800+chakflying@users.noreply.github.com>
Date: Thu, 29 Jun 2023 22:41:01 +0800
Subject: [PATCH] [Experiment] Use incremental vacuum to speed up delete?
 (#2800)

* DB: Use incremental vacuum

* Chore: Add log for delete monitor exec. time

* WIP: Test synchronous NORMAL
---
 server/database.js | 4 ++--
 server/server.js   | 6 ++++++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/server/database.js b/server/database.js
index b3a497bc2..a8e486894 100644
--- a/server/database.js
+++ b/server/database.js
@@ -169,12 +169,12 @@ class Database {
             await R.exec("PRAGMA journal_mode = WAL");
         }
         await R.exec("PRAGMA cache_size = -12000");
-        await R.exec("PRAGMA auto_vacuum = FULL");
+        await R.exec("PRAGMA auto_vacuum = INCREMENTAL");
 
         // This ensures that an operating system crash or power failure will not corrupt the database.
         // FULL synchronous is very safe, but it is also slower.
         // Read more: https://sqlite.org/pragma.html#pragma_synchronous
-        await R.exec("PRAGMA synchronous = FULL");
+        await R.exec("PRAGMA synchronous = NORMAL");
 
         if (!noLog) {
             log.info("db", "SQLite config:");
diff --git a/server/server.js b/server/server.js
index 870dc7525..b5a6de0b6 100644
--- a/server/server.js
+++ b/server/server.js
@@ -902,6 +902,8 @@ let needSetup = false;
                     delete server.monitorList[monitorID];
                 }
 
+                const startTime = Date.now();
+
                 await R.exec("DELETE FROM monitor WHERE id = ? AND user_id = ? ", [
                     monitorID,
                     socket.userID,
@@ -910,6 +912,10 @@ let needSetup = false;
                 // Fix #2880
                 apicache.clear();
 
+                const endTime = Date.now();
+
+                log.info("DB", `Delete Monitor completed in : ${endTime - startTime} ms`);
+
                 callback({
                     ok: true,
                     msg: "Deleted Successfully.",