perf: reduce disk writes

pull/10839/head
Tienson Qin 2023-12-27 00:06:39 +08:00
parent 530bf7ac4d
commit 5b13fe6df4
6 changed files with 29 additions and 29 deletions

View File

@ -4,7 +4,7 @@
rum/rum {:mvn/version "0.12.9"} rum/rum {:mvn/version "0.12.9"}
datascript/datascript {:git/url "https://github.com/logseq/datascript" ;; fork datascript/datascript {:git/url "https://github.com/logseq/datascript" ;; fork
:sha "6d9b5f0db22d960ddf4870503bc181bff9a50c5d"} :sha "21fc7880c7042fb1d9086135d162ea7a91681f89"}
datascript-transit/datascript-transit {:mvn/version "0.3.0"} datascript-transit/datascript-transit {:mvn/version "0.3.0"}
borkdude/rewrite-edn {:mvn/version "0.4.7"} borkdude/rewrite-edn {:mvn/version "0.4.7"}

2
deps/db/deps.edn vendored
View File

@ -1,7 +1,7 @@
{:deps {:deps
;; External deps should be kept in sync with https://github.com/logseq/nbb-logseq/blob/main/bb.edn ;; External deps should be kept in sync with https://github.com/logseq/nbb-logseq/blob/main/bb.edn
{datascript/datascript {:git/url "https://github.com/logseq/datascript" ;; fork {datascript/datascript {:git/url "https://github.com/logseq/datascript" ;; fork
:sha "6d9b5f0db22d960ddf4870503bc181bff9a50c5d"} :sha "21fc7880c7042fb1d9086135d162ea7a91681f89"}
com.cognitect/transit-cljs {:mvn/version "0.8.280"} com.cognitect/transit-cljs {:mvn/version "0.8.280"}
cljs-bean/cljs-bean {:mvn/version "1.5.0"}} cljs-bean/cljs-bean {:mvn/version "1.5.0"}}

View File

@ -1,7 +1,7 @@
{:deps {:deps
;; External deps should be kept in sync with https://github.com/logseq/nbb-logseq/blob/main/bb.edn ;; External deps should be kept in sync with https://github.com/logseq/nbb-logseq/blob/main/bb.edn
{datascript/datascript {:git/url "https://github.com/logseq/datascript" ;; fork {datascript/datascript {:git/url "https://github.com/logseq/datascript" ;; fork
:sha "6d9b5f0db22d960ddf4870503bc181bff9a50c5d"} :sha "21fc7880c7042fb1d9086135d162ea7a91681f89"}
logseq/db {:local/root "../db"} logseq/db {:local/root "../db"}
com.cognitect/transit-cljs {:mvn/version "0.8.280"}} com.cognitect/transit-cljs {:mvn/version "0.8.280"}}
:aliases :aliases

View File

@ -270,7 +270,10 @@
(let [tx-data (edn/read-string tx-data) (let [tx-data (edn/read-string tx-data)
tx-meta (edn/read-string tx-meta) tx-meta (edn/read-string tx-meta)
context (edn/read-string context) context (edn/read-string context)
tx-report (d/transact! conn tx-data tx-meta) tx-meta' (if (or (:from-disk? tx-meta) (:new-graph? tx-meta))
tx-meta
(assoc tx-meta :skip-store? true))
tx-report (d/transact! conn tx-data tx-meta')
result (pipeline/invoke-hooks conn tx-report context) result (pipeline/invoke-hooks conn tx-report context)
;; TODO: delay search indice so that UI can be refreshed earlier ;; TODO: delay search indice so that UI can be refreshed earlier
search-indice (search/sync-search-indice repo (:tx-report result)) search-indice (search/sync-search-indice repo (:tx-report result))

View File

@ -51,4 +51,5 @@
(defn transact-db->worker! (defn transact-db->worker!
[repo tx-report] [repo tx-report]
(<transact-data repo (:tx-data tx-report) (:tx-meta tx-report))) (when-not (:pipeline-replace? (:tx-meta tx-report))
(<transact-data repo (:tx-data tx-report) (:tx-meta tx-report))))

View File

@ -42,13 +42,12 @@
(defn invoke-hooks (defn invoke-hooks
[conn tx-report context] [conn tx-report context]
(let [tx-meta (:tx-meta tx-report) (let [tx-meta (:tx-meta tx-report)
{:keys [from-disk? new-graph? pipeline-replace?]} tx-meta] {:keys [from-disk? new-graph?]} tx-meta]
(if (or from-disk? new-graph?) (if (or from-disk? new-graph?)
{:tx-report tx-report} {:tx-report tx-report}
(let [{:keys [pages blocks]} (ds-report/get-blocks-and-pages tx-report) (let [{:keys [pages blocks]} (ds-report/get-blocks-and-pages tx-report)
deleted-block-uuids (set (outliner-pipeline/filter-deleted-blocks (:tx-data tx-report))) deleted-block-uuids (set (outliner-pipeline/filter-deleted-blocks (:tx-data tx-report)))
replace-tx (when-not pipeline-replace? replace-tx (concat
(concat
;; block path refs ;; block path refs
(set (compute-block-path-refs-tx tx-report blocks)) (set (compute-block-path-refs-tx tx-report blocks))
@ -64,12 +63,9 @@
(when-let [db-id (:db/id b)] (when-let [db-id (:db/id b)]
{:db/id db-id {:db/id db-id
:block/tx-id tx-id})) updated-blocks) :block/tx-id tx-id})) updated-blocks)
(remove nil?))))) (remove nil?))))
tx-report' (or tx-report' (d/transact! conn replace-tx {:replace? true
(when-not pipeline-replace? :pipeline-replace? true})
(d/transact! conn replace-tx {:replace? true
:pipeline-replace? true}))
tx-report)
full-tx-data (concat (:tx-data tx-report) (:tx-data tx-report')) full-tx-data (concat (:tx-data tx-report) (:tx-data tx-report'))
final-tx-report (assoc tx-report' :tx-data full-tx-data) final-tx-report (assoc tx-report' :tx-data full-tx-data)
affected-query-keys (when-not (:importing? context) affected-query-keys (when-not (:importing? context)