diff --git a/src/cuirass/metrics.scm b/src/cuirass/metrics.scm
index fa42e430f231b4e7e5e23195a71023cfba0098fc..f244c01eaa604b62b209ea2f925cf5873fa1aadd 100644
--- a/src/cuirass/metrics.scm
+++ b/src/cuirass/metrics.scm
@@ -328,41 +328,43 @@ timestamp) VALUES ("
 
 (define (db-update-metrics)
   "Compute and update all available metrics in database."
-  (define specifications
-    (map (cut assq-ref <> #:name) (db-get-specifications)))
-
-  ;; We can not update all evaluations metrics for performance reasons. Limit
-  ;; to the evaluations that were added during the past three days.
-  (define evaluations
-    (db-latest-evaluations))
-
-  (db-update-metric 'builds-per-day)
-  (db-update-metric 'new-derivations-per-day)
-  (db-update-metric 'pending-builds)
-
-  ;; Update specification related metrics.
-  (for-each (lambda (spec)
-              (db-update-metric
-               'average-10-last-eval-duration-per-spec spec)
-              (db-update-metric
-               'average-100-last-eval-duration-per-spec spec)
-              (db-update-metric
-               'average-eval-duration-per-spec spec)
-
-              (db-update-metric
-               'percentage-failure-10-last-eval-per-spec spec)
-              (db-update-metric
-               'percentage-failure-100-last-eval-per-spec spec)
-              (db-update-metric
-               'percentage-failed-eval-per-spec spec))
-            specifications)
-
-  ;; Update evaluation related metrics.
-  (for-each (lambda (evaluation)
-              (db-update-metric
-               'average-eval-build-start-time evaluation)
-              (db-update-metric
-               'average-eval-build-complete-time evaluation)
-              (db-update-metric
-               'evaluation-completion-speed evaluation))
-            evaluations))
+  (with-db-worker-thread db
+    ;; We can not update all evaluations metrics for performance reasons.
+    ;; Limit to the evaluations that were added during the past three days.
+    (let ((specifications
+           (map (cut assq-ref <> #:name) (db-get-specifications)))
+          (evaluations (db-latest-evaluations)))
+      (sqlite-exec db "BEGIN TRANSACTION;")
+
+      (db-update-metric 'builds-per-day)
+      (db-update-metric 'new-derivations-per-day)
+      (db-update-metric 'pending-builds)
+
+      ;; Update specification related metrics.
+      (for-each (lambda (spec)
+                  (db-update-metric
+                   'average-10-last-eval-duration-per-spec spec)
+                  (db-update-metric
+                   'average-100-last-eval-duration-per-spec spec)
+                  (db-update-metric
+                   'average-eval-duration-per-spec spec)
+
+                  (db-update-metric
+                   'percentage-failure-10-last-eval-per-spec spec)
+                  (db-update-metric
+                   'percentage-failure-100-last-eval-per-spec spec)
+                  (db-update-metric
+                   'percentage-failed-eval-per-spec spec))
+                specifications)
+
+      ;; Update evaluation related metrics.
+      (for-each (lambda (evaluation)
+                  (db-update-metric
+                   'average-eval-build-start-time evaluation)
+                  (db-update-metric
+                   'average-eval-build-complete-time evaluation)
+                  (db-update-metric
+                   'evaluation-completion-speed evaluation))
+                evaluations)
+
+      (sqlite-exec db "COMMIT;"))))