diff --git a/db/db_impl.cc b/db/db_impl.cc index dfa6f8634..801905132 100644 --- a/db/db_impl.cc +++ b/db/db_impl.cc @@ -1690,7 +1690,9 @@ Status DBImpl::DoCompactionWork(CompactionState* compact) { CompactionStats stats; stats.micros = env_->NowMicros() - start_micros - imm_micros; - + if (options_.statistics) { + options_.statistics->measureTime(COMPACTION_TIME, stats.micros); + } stats.files_in_leveln = compact->compaction->num_input_files(0); stats.files_in_levelnp1 = compact->compaction->num_input_files(1); diff --git a/db/db_impl.h b/db/db_impl.h index 2d240e2d4..0e16c4e4a 100644 --- a/db/db_impl.h +++ b/db/db_impl.h @@ -275,7 +275,7 @@ class DBImpl : public DB { // Per level compaction stats. stats_[level] stores the stats for // compactions that produced data for the specified "level". struct CompactionStats { - int64_t micros; + uint64_t micros; // Bytes read from level N during compaction between levels N and N+1 int64_t bytes_readn; diff --git a/include/leveldb/statistics.h b/include/leveldb/statistics.h index 8e47b538d..fe983ba48 100644 --- a/include/leveldb/statistics.h +++ b/include/leveldb/statistics.h @@ -49,7 +49,8 @@ enum Tickers { enum Histograms { DB_GET = 0, DB_WRITE = 1, - HISTOGRAM_ENUM_MAX = 2, + COMPACTION_TIME = 2, + HISTOGRAM_ENUM_MAX = 3, }; struct HistogramData {