diff --git a/plugins/metrics/parameters.go b/plugins/metrics/parameters.go
index 601c31d596cf62c8971211bebc4f5101447ef9b5..4f6e146eab6ecb4d84b2517dd3128529eb8f94e1 100644
--- a/plugins/metrics/parameters.go
+++ b/plugins/metrics/parameters.go
@@ -6,12 +6,15 @@ import (
 
 const (
 	// CfgMetricsLocal defines the config flag to enable/disable local metrics.
-	CfgMetricsLocal = "metrics.local"
+	CfgMetricsLocal = "metrics.local.enable"
+	// CfgMetricsLocalDB defines the config flag to enable/disable local database metrics.
+	CfgMetricsLocalDB = "metrics.local.db"
 	// CfgMetricsGlobal defines the config flag to enable/disable global metrics.
-	CfgMetricsGlobal = "metrics.global"
+	CfgMetricsGlobal = "metrics.global.enable"
 )
 
 func init() {
 	flag.Bool(CfgMetricsLocal, true, "include local metrics")
+	flag.Bool(CfgMetricsLocalDB, false, "include local database metrics")
 	flag.Bool(CfgMetricsGlobal, false, "include global metrics")
 }
diff --git a/plugins/metrics/plugin.go b/plugins/metrics/plugin.go
index 68bedc1b7ca640e1bc6d89afe93d543760ce9e3d..7c1449c71b4ed4170c577f65b54359389022e672 100644
--- a/plugins/metrics/plugin.go
+++ b/plugins/metrics/plugin.go
@@ -47,7 +47,7 @@ func configure(_ *node.Plugin) {
 }
 
 func run(_ *node.Plugin) {
-
+	log.Infof("Starting %s ...", PluginName)
 	if config.Node().GetBool(CfgMetricsLocal) {
 		registerLocalMetrics()
 	}
@@ -58,7 +58,8 @@ func run(_ *node.Plugin) {
 	}
 
 	// create a background worker that update the metrics every second
-	if err := daemon.BackgroundWorker("Metrics Updater", func(shutdownSignal <-chan struct{}) {
+	if err := daemon.BackgroundWorker("Metrics Updater[1s]", func(shutdownSignal <-chan struct{}) {
+		defer log.Infof("Stopping Metrics Updater[1s] ... done")
 		if config.Node().GetBool(CfgMetricsLocal) {
 			timeutil.Ticker(func() {
 				measureCPUUsage()
@@ -68,7 +69,6 @@ func run(_ *node.Plugin) {
 				measureValueTips()
 				measureReceivedMPS()
 				measureRequestQueueSize()
-				measureDBStats()
 
 				// gossip network traffic
 				g := gossipCurrentTraffic()
@@ -79,10 +79,23 @@ func run(_ *node.Plugin) {
 		if config.Node().GetBool(CfgMetricsGlobal) {
 			timeutil.Ticker(calculateNetworkDiameter, 1*time.Minute, shutdownSignal)
 		}
-
+		log.Infof("Stopping Metrics Updater[1s] ...")
 	}, shutdown.PriorityMetrics); err != nil {
 		log.Panicf("Failed to start as daemon: %s", err)
 	}
+
+	if config.Node().GetBool(CfgMetricsLocalDB) {
+		// create a background worker that updates the db metrics every 20 second
+		if err := daemon.BackgroundWorker("Metrics Updater[DB]", func(shutdownSignal <-chan struct{}) {
+			defer log.Infof("Stopping Metrics Updater[DB] ... done")
+			timeutil.Ticker(func() {
+				measureDBStats()
+			}, 20*time.Second, shutdownSignal)
+			log.Infof("Stopping Metrics Updater[DB] ...")
+		}, shutdown.PriorityMetrics); err != nil {
+			log.Panicf("Failed to start as daemon: %s", err)
+		}
+	}
 }
 
 func registerLocalMetrics() {