From 0958e1f402c1f54c620bcc5fc388371faad09e86 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 14 Apr 2026 00:27:36 +0800 Subject: [PATCH] fix(perf): don't call d/datoms to get all eavt It's too slow (+8s) for a 500m sqlite file to just insert a new block --- deps/db/src/logseq/db/frontend/validate.cljs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/deps/db/src/logseq/db/frontend/validate.cljs b/deps/db/src/logseq/db/frontend/validate.cljs index 37eff34d7e..500c9de9df 100644 --- a/deps/db/src/logseq/db/frontend/validate.cljs +++ b/deps/db/src/logseq/db/frontend/validate.cljs @@ -52,8 +52,9 @@ [{:keys [db-after tx-data tx-meta] :as tx-report} {:keys [closed-schema?]}] (binding [db-malli-schema/*skip-strict-url-validate?* true] (let [changed-ids (->> tx-data (keep :e) distinct) - datoms (d/datoms db-after :eavt) - tx-datoms (mapcat (fn [id] (filter (fn [d] (= (:e d) id)) datoms)) changed-ids) + tx-datoms (mapcat (fn [id] + (d/datoms db-after :eavt id)) + changed-ids) ent-maps* (map (fn [[db-id m]] ;; Add :db/id for debugging (assoc m :db/id db-id))