little improve

Signed-off-by: OneSizeFitQuorum <tanxinyu@apache.org>
diff --git a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java
index 5fa25f3..623cd26 100644
--- a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java
+++ b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java
@@ -88,7 +88,7 @@
   @Override
   public Timer createTimer(MetricInfo metricInfo) {
     return new DropwizardTimer(
-        metricRegistry.timer(DropwizardMetricNameTool.toFlatString(metricInfo)));
+        metricRegistry.histogram(DropwizardMetricNameTool.toFlatString(metricInfo)));
   }
 
   @Override
diff --git a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardTimer.java b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardTimer.java
index 24a0849..404f42d 100644
--- a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardTimer.java
+++ b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardTimer.java
@@ -26,24 +26,29 @@
 import java.util.concurrent.TimeUnit;
 
 public class DropwizardTimer implements Timer {
-  com.codahale.metrics.Timer timer;
+  com.codahale.metrics.Histogram histogram;
 
-  public DropwizardTimer(com.codahale.metrics.Timer timer) {
-    this.timer = timer;
+  public DropwizardTimer(com.codahale.metrics.Histogram histogram) {
+    this.histogram = histogram;
   }
 
   @Override
   public void update(long duration, TimeUnit unit) {
-    timer.update(duration, unit);
+    histogram.update(unit.toNanos(duration));
   }
 
   @Override
   public HistogramSnapshot takeSnapshot() {
-    return new DropwizardHistogramSnapshot(timer.getSnapshot());
+    return new DropwizardHistogramSnapshot(histogram.getSnapshot());
+  }
+
+  @Override
+  public long getCount() {
+    return histogram.getCount();
   }
 
   @Override
   public Rate getImmutableRate() {
-    return new DropwizardRate(timer);
+    return null;
   }
 }
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/prometheus/PrometheusReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/prometheus/PrometheusReporter.java
index a4f0beb..a243d5c 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/prometheus/PrometheusReporter.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/prometheus/PrometheusReporter.java
@@ -152,7 +152,7 @@
               metricInfo.getTags(),
               metricType,
               snapshot,
-              timer.getImmutableRate().getCount(),
+              timer.getCount(),
               prometheusTextWriter);
         }
       }
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Timer.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Timer.java
index 020d209..a1f5fb8 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Timer.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Timer.java
@@ -48,6 +48,10 @@
   /** It's not safe to use the update interface of this rate. */
   Rate getImmutableRate();
 
+  default long getCount() {
+    return 0;
+  }
+
   @Override
   default void constructValueMap(Map<String, Object> result) {
     takeSnapshot().constructValueMap(result);
diff --git a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/type/MicrometerTimer.java b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/type/MicrometerTimer.java
index c9fa790..0c841a8 100644
--- a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/type/MicrometerTimer.java
+++ b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/type/MicrometerTimer.java
@@ -48,6 +48,11 @@
   }
 
   @Override
+  public long getCount() {
+    return micrometerRate.getCount();
+  }
+
+  @Override
   public Rate getImmutableRate() {
     return micrometerRate;
   }
diff --git a/server/src/test/java/org/apache/iotdb/db/metric/MetricServiceTest.java b/server/src/test/java/org/apache/iotdb/db/metric/MetricServiceTest.java
index e0c7fc9..dc9b35f 100644
--- a/server/src/test/java/org/apache/iotdb/db/metric/MetricServiceTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metric/MetricServiceTest.java
@@ -231,7 +231,7 @@
     metricService.timer(6, TimeUnit.MILLISECONDS, "timer1", MetricLevel.IMPORTANT, "tag", "value");
     metricService.timer(8, TimeUnit.MILLISECONDS, "timer1", MetricLevel.IMPORTANT, "tag", "value");
     metricService.timer(10, TimeUnit.MILLISECONDS, "timer1", MetricLevel.IMPORTANT, "tag", "value");
-    assertEquals(5, timer1.getImmutableRate().getCount());
+    assertEquals(5, timer1.getCount());
     assertEquals(5, timer1.takeSnapshot().size());
     Timer timer2 = metricService.getOrCreateTimer("timer1", MetricLevel.IMPORTANT, "tag", "value");
     assertEquals(timer1, timer2);