internal_stats.h 20.0 KB
Newer Older
1
//  Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
I
Igor Canadi 已提交
2 3 4 5 6 7 8 9 10 11
//  This source code is licensed under the BSD-style license found in the
//  LICENSE file in the root directory of this source tree. An additional grant
//  of patent rights can be found in the PATENTS file in the same directory.
//
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. See the AUTHORS file for names of contributors.
//

#pragma once
12
#include <map>
I
Igor Canadi 已提交
13
#include <string>
14 15 16
#include <vector>

#include "db/version_set.h"
I
Igor Canadi 已提交
17

18 19
class ColumnFamilyData;

I
Igor Canadi 已提交
20
namespace rocksdb {
21 22

class MemTableList;
23
class DBImpl;
24

25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
// Config for retrieving a property's value.
struct DBPropertyInfo {
  bool need_out_of_mutex;

  // gcc had an internal error for initializing union of pointer-to-member-
  // functions. Workaround is to populate exactly one of the following function
  // pointers with a non-nullptr value.

  // @param value Value-result argument for storing the property's string value
  // @param suffix Argument portion of the property. For example, suffix would
  //      be "5" for the property "rocksdb.num-files-at-level5". So far, only
  //      certain string properties take an argument.
  bool (InternalStats::*handle_string)(std::string* value, Slice suffix);

  // @param value Value-result argument for storing the property's uint64 value
  // @param db Many of the int properties rely on DBImpl methods.
  // @param version Version is needed in case the property is retrieved without
  //      holding db mutex, which is only supported for int properties.
  bool (InternalStats::*handle_int)(uint64_t* value, DBImpl* db,
                                    Version* version);
45 46
  bool (InternalStats::*handle_map)(
      std::map<std::string, double>* compaction_stats);
47 48
};

49
extern const DBPropertyInfo* GetPropertyInfo(const Slice& property);
50 51

#ifndef ROCKSDB_LITE
52 53 54 55
enum class LevelStatType {
  INVALID = 0,
  NUM_FILES,
  COMPACTED_FILES,
56
  SIZE_BYTES,
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
  SCORE,
  READ_GB,
  RN_GB,
  RNP1_GB,
  WRITE_GB,
  W_NEW_GB,
  MOVED_GB,
  WRITE_AMP,
  READ_MBPS,
  WRITE_MBPS,
  COMP_SEC,
  COMP_COUNT,
  AVG_SEC,
  KEY_IN,
  KEY_DROP,
  TOTAL  // total number of types
};

struct LevelStat {
  // This what will be L?.property_name in the flat map returned to the user
  std::string property_name;
  // This will be what we will print in the header in the cli
  std::string header_name;
};

I
Igor Canadi 已提交
82 83
class InternalStats {
 public:
84 85
  static const std::map<LevelStatType, LevelStat> compaction_level_stats;

86
  enum InternalCFStatsType {
87 88
    LEVEL0_SLOWDOWN_TOTAL,
    LEVEL0_SLOWDOWN_WITH_COMPACTION,
I
Igor Canadi 已提交
89
    MEMTABLE_COMPACTION,
90
    MEMTABLE_SLOWDOWN,
91 92
    LEVEL0_NUM_FILES_TOTAL,
    LEVEL0_NUM_FILES_WITH_COMPACTION,
93
    SOFT_PENDING_COMPACTION_BYTES_LIMIT,
94
    HARD_PENDING_COMPACTION_BYTES_LIMIT,
I
Igor Canadi 已提交
95
    WRITE_STALLS_ENUM_MAX,
96
    BYTES_FLUSHED,
97
    BYTES_INGESTED_ADD_FILE,
98 99 100
    INGESTED_NUM_FILES_TOTAL,
    INGESTED_LEVEL0_NUM_FILES_TOTAL,
    INGESTED_NUM_KEYS_TOTAL,
101
    INTERNAL_CF_STATS_ENUM_MAX,
I
Igor Canadi 已提交
102 103
  };

104 105 106 107
  enum InternalDBStatsType {
    WAL_FILE_BYTES,
    WAL_FILE_SYNCED,
    BYTES_WRITTEN,
S
sdong 已提交
108
    NUMBER_KEYS_WRITTEN,
109 110 111
    WRITE_DONE_BY_OTHER,
    WRITE_DONE_BY_SELF,
    WRITE_WITH_WAL,
S
sdong 已提交
112
    WRITE_STALL_MICROS,
113 114 115
    INTERNAL_DB_STATS_ENUM_MAX,
  };

116
  InternalStats(int num_levels, Env* env, ColumnFamilyData* cfd)
117 118 119
      : db_stats_{},
        cf_stats_value_{},
        cf_stats_count_{},
120
        comp_stats_(num_levels),
121
        file_read_latency_(num_levels),
122
        bg_error_count_(0),
I
Igor Canadi 已提交
123 124
        number_levels_(num_levels),
        env_(env),
125
        cfd_(cfd),
126
        started_at_(env->NowMicros()) {}
I
Igor Canadi 已提交
127

128
  // Per level compaction stats.  comp_stats_[level] stores the stats for
I
Igor Canadi 已提交
129 130 131 132
  // compactions that produced data for the specified "level".
  struct CompactionStats {
    uint64_t micros;

133 134
    // The number of bytes read from all non-output levels
    uint64_t bytes_read_non_output_levels;
I
Igor Canadi 已提交
135

136 137
    // The number of bytes read from the compaction output level.
    uint64_t bytes_read_output_level;
I
Igor Canadi 已提交
138

139
    // Total number of bytes written during compaction
140
    uint64_t bytes_written;
I
Igor Canadi 已提交
141

142
    // Total number of bytes moved to the output level
143 144
    uint64_t bytes_moved;

145 146
    // The number of compaction input files in all non-output levels.
    int num_input_files_in_non_output_levels;
I
Igor Canadi 已提交
147

148 149
    // The number of compaction input files in the output level.
    int num_input_files_in_output_level;
I
Igor Canadi 已提交
150

151 152
    // The number of compaction output files.
    int num_output_files;
I
Igor Canadi 已提交
153

154
    // Total incoming entries during compaction between levels N and N+1
S
sdong 已提交
155
    uint64_t num_input_records;
156 157 158

    // Accumulated diff number of entries
    // (num input entries - num output entires) for compaction  levels N and N+1
S
sdong 已提交
159
    uint64_t num_dropped_records;
160

I
Igor Canadi 已提交
161 162 163
    // Number of compactions done
    int count;

I
Igor Canadi 已提交
164
    explicit CompactionStats(int _count = 0)
I
Igor Canadi 已提交
165
        : micros(0),
166 167
          bytes_read_non_output_levels(0),
          bytes_read_output_level(0),
I
Igor Canadi 已提交
168
          bytes_written(0),
169
          bytes_moved(0),
170 171 172
          num_input_files_in_non_output_levels(0),
          num_input_files_in_output_level(0),
          num_output_files(0),
173 174
          num_input_records(0),
          num_dropped_records(0),
I
Igor Canadi 已提交
175
          count(_count) {}
I
Igor Canadi 已提交
176

177 178
    explicit CompactionStats(const CompactionStats& c)
        : micros(c.micros),
179 180
          bytes_read_non_output_levels(c.bytes_read_non_output_levels),
          bytes_read_output_level(c.bytes_read_output_level),
181
          bytes_written(c.bytes_written),
182
          bytes_moved(c.bytes_moved),
183 184 185 186 187
          num_input_files_in_non_output_levels(
              c.num_input_files_in_non_output_levels),
          num_input_files_in_output_level(
              c.num_input_files_in_output_level),
          num_output_files(c.num_output_files),
188 189
          num_input_records(c.num_input_records),
          num_dropped_records(c.num_dropped_records),
190 191
          count(c.count) {}

S
Siying Dong 已提交
192 193 194 195 196 197 198 199 200 201 202 203 204 205
    void Clear() {
      this->micros = 0;
      this->bytes_read_non_output_levels = 0;
      this->bytes_read_output_level = 0;
      this->bytes_written = 0;
      this->bytes_moved = 0;
      this->num_input_files_in_non_output_levels = 0;
      this->num_input_files_in_output_level = 0;
      this->num_output_files = 0;
      this->num_input_records = 0;
      this->num_dropped_records = 0;
      this->count = 0;
    }

I
Igor Canadi 已提交
206 207
    void Add(const CompactionStats& c) {
      this->micros += c.micros;
208 209
      this->bytes_read_non_output_levels += c.bytes_read_non_output_levels;
      this->bytes_read_output_level += c.bytes_read_output_level;
I
Igor Canadi 已提交
210
      this->bytes_written += c.bytes_written;
211
      this->bytes_moved += c.bytes_moved;
212 213 214 215 216
      this->num_input_files_in_non_output_levels +=
          c.num_input_files_in_non_output_levels;
      this->num_input_files_in_output_level +=
          c.num_input_files_in_output_level;
      this->num_output_files += c.num_output_files;
217 218
      this->num_input_records += c.num_input_records;
      this->num_dropped_records += c.num_dropped_records;
L
Lei Jin 已提交
219
      this->count += c.count;
I
Igor Canadi 已提交
220
    }
221 222 223

    void Subtract(const CompactionStats& c) {
      this->micros -= c.micros;
224 225
      this->bytes_read_non_output_levels -= c.bytes_read_non_output_levels;
      this->bytes_read_output_level -= c.bytes_read_output_level;
226
      this->bytes_written -= c.bytes_written;
227
      this->bytes_moved -= c.bytes_moved;
228 229 230 231 232
      this->num_input_files_in_non_output_levels -=
          c.num_input_files_in_non_output_levels;
      this->num_input_files_in_output_level -=
          c.num_input_files_in_output_level;
      this->num_output_files -= c.num_output_files;
233 234
      this->num_input_records -= c.num_input_records;
      this->num_dropped_records -= c.num_dropped_records;
235 236
      this->count -= c.count;
    }
I
Igor Canadi 已提交
237 238
  };

S
Siying Dong 已提交
239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258
  void Clear() {
    for (int i = 0; i < INTERNAL_DB_STATS_ENUM_MAX; i++) {
      db_stats_[i].store(0);
    }
    for (int i = 0; i < INTERNAL_CF_STATS_ENUM_MAX; i++) {
      cf_stats_count_[i] = 0;
      cf_stats_value_[i] = 0;
    }
    for (auto& comp_stat : comp_stats_) {
      comp_stat.Clear();
    }
    for (auto& h : file_read_latency_) {
      h.Clear();
    }
    cf_stats_snapshot_.Clear();
    db_stats_snapshot_.Clear();
    bg_error_count_ = 0;
    started_at_ = env_->NowMicros();
  }

I
Igor Canadi 已提交
259
  void AddCompactionStats(int level, const CompactionStats& stats) {
260
    comp_stats_[level].Add(stats);
I
Igor Canadi 已提交
261 262
  }

263 264 265 266
  void IncBytesMoved(int level, uint64_t amount) {
    comp_stats_[level].bytes_moved += amount;
  }

267 268 269
  void AddCFStats(InternalCFStatsType type, uint64_t value) {
    cf_stats_value_[type] += value;
    ++cf_stats_count_[type];
I
Igor Canadi 已提交
270 271
  }

272
  void AddDBStats(InternalDBStatsType type, uint64_t value) {
273 274 275 276 277 278 279
    auto& v = db_stats_[type];
    v.store(v.load(std::memory_order_relaxed) + value,
            std::memory_order_relaxed);
  }

  uint64_t GetDBStats(InternalDBStatsType type) {
    return db_stats_[type].load(std::memory_order_relaxed);
I
Igor Canadi 已提交
280 281
  }

282 283 284 285
  HistogramImpl* GetFileReadHist(int level) {
    return &file_read_latency_[level];
  }

286 287 288 289
  uint64_t GetBackgroundErrorCount() const { return bg_error_count_; }

  uint64_t BumpAndGetBackgroundErrorCount() { return ++bg_error_count_; }

290 291 292
  bool GetStringProperty(const DBPropertyInfo& property_info,
                         const Slice& property, std::string* value);

293 294 295 296
  bool GetMapProperty(const DBPropertyInfo& property_info,
                      const Slice& property,
                      std::map<std::string, double>* value);

297 298
  bool GetIntProperty(const DBPropertyInfo& property_info, uint64_t* value,
                      DBImpl* db);
I
Igor Canadi 已提交
299

300 301
  bool GetIntPropertyOutOfMutex(const DBPropertyInfo& property_info,
                                Version* version, uint64_t* value);
302

303 304 305
  // Store a mapping from the user-facing DB::Properties string to our
  // DBPropertyInfo struct used internally for retrieving properties.
  static const std::unordered_map<std::string, DBPropertyInfo> ppt_name_to_info;
306

I
Igor Canadi 已提交
307
 private:
308
  void DumpDBStats(std::string* value);
309
  void DumpCFMapStats(std::map<std::string, double>* cf_stats);
310
  void DumpCFMapStats(
311 312
      std::map<int, std::map<LevelStatType, double>>* level_stats,
      CompactionStats* compaction_stats_sum);
313
  void DumpCFStats(std::string* value);
314 315
  void DumpCFStatsNoFileHistogram(std::string* value);
  void DumpCFFileHistogram(std::string* value);
316 317

  // Per-DB stats
318
  std::atomic<uint64_t> db_stats_[INTERNAL_DB_STATS_ENUM_MAX];
319
  // Per-ColumnFamily stats
320 321
  uint64_t cf_stats_value_[INTERNAL_CF_STATS_ENUM_MAX];
  uint64_t cf_stats_count_[INTERNAL_CF_STATS_ENUM_MAX];
322 323
  // Per-ColumnFamily/level compaction stats
  std::vector<CompactionStats> comp_stats_;
324
  std::vector<HistogramImpl> file_read_latency_;
I
Igor Canadi 已提交
325 326

  // Used to compute per-interval statistics
327 328 329
  struct CFStatsSnapshot {
    // ColumnFamily-level stats
    CompactionStats comp_stats;
330
    uint64_t ingest_bytes_flush;      // Bytes written to L0 (Flush)
331
    uint64_t stall_count;             // Stall count
332 333 334 335 336
    // Stats from compaction jobs - bytes written, bytes read, duration.
    uint64_t compact_bytes_write;
    uint64_t compact_bytes_read;
    uint64_t compact_micros;
    double seconds_up;
337

338 339 340 341 342 343
    // AddFile specific stats
    uint64_t ingest_bytes_addfile;     // Total Bytes ingested
    uint64_t ingest_files_addfile;     // Total number of files ingested
    uint64_t ingest_l0_files_addfile;  // Total number of files ingested to L0
    uint64_t ingest_keys_addfile;      // Total number of keys ingested

344 345
    CFStatsSnapshot()
        : comp_stats(0),
346
          ingest_bytes_flush(0),
347 348 349 350
          stall_count(0),
          compact_bytes_write(0),
          compact_bytes_read(0),
          compact_micros(0),
351 352 353 354 355
          seconds_up(0),
          ingest_bytes_addfile(0),
          ingest_files_addfile(0),
          ingest_l0_files_addfile(0),
          ingest_keys_addfile(0) {}
S
Siying Dong 已提交
356 357 358 359 360 361 362 363 364 365 366 367 368 369

    void Clear() {
      comp_stats.Clear();
      ingest_bytes_flush = 0;
      stall_count = 0;
      compact_bytes_write = 0;
      compact_bytes_read = 0;
      compact_micros = 0;
      seconds_up = 0;
      ingest_bytes_addfile = 0;
      ingest_files_addfile = 0;
      ingest_l0_files_addfile = 0;
      ingest_keys_addfile = 0;
    }
370 371 372 373 374 375 376 377
  } cf_stats_snapshot_;

  struct DBStatsSnapshot {
    // DB-level stats
    uint64_t ingest_bytes;            // Bytes written by user
    uint64_t wal_bytes;               // Bytes written to WAL
    uint64_t wal_synced;              // Number of times WAL is synced
    uint64_t write_with_wal;          // Number of writes that request WAL
I
Igor Canadi 已提交
378 379
    // These count the number of writes processed by the calling thread or
    // another thread.
380 381
    uint64_t write_other;
    uint64_t write_self;
S
sdong 已提交
382 383 384 385 386
    // Total number of keys written. write_self and write_other measure number
    // of write requests written, Each of the write request can contain updates
    // to multiple keys. num_keys_written is total number of keys updated by all
    // those writes.
    uint64_t num_keys_written;
S
sdong 已提交
387 388
    // Total time writes delayed by stalls.
    uint64_t write_stall_micros;
389 390 391 392 393 394 395 396 397
    double seconds_up;

    DBStatsSnapshot()
        : ingest_bytes(0),
          wal_bytes(0),
          wal_synced(0),
          write_with_wal(0),
          write_other(0),
          write_self(0),
398
          num_keys_written(0),
S
sdong 已提交
399
          write_stall_micros(0),
400
          seconds_up(0) {}
S
Siying Dong 已提交
401 402 403 404 405 406 407 408 409 410 411 412

    void Clear() {
      ingest_bytes = 0;
      wal_bytes = 0;
      wal_synced = 0;
      write_with_wal = 0;
      write_other = 0;
      write_self = 0;
      num_keys_written = 0;
      write_stall_micros = 0;
      seconds_up = 0;
    }
413
  } db_stats_snapshot_;
I
Igor Canadi 已提交
414

415 416 417
  // Handler functions for getting property values. They use "value" as a value-
  // result argument, and return true upon successfully setting "value".
  bool HandleNumFilesAtLevel(std::string* value, Slice suffix);
418
  bool HandleCompressionRatioAtLevelPrefix(std::string* value, Slice suffix);
419 420
  bool HandleLevelStats(std::string* value, Slice suffix);
  bool HandleStats(std::string* value, Slice suffix);
421
  bool HandleCFMapStats(std::map<std::string, double>* compaction_stats);
422
  bool HandleCFStats(std::string* value, Slice suffix);
423 424
  bool HandleCFStatsNoFileHistogram(std::string* value, Slice suffix);
  bool HandleCFFileHistogram(std::string* value, Slice suffix);
425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455
  bool HandleDBStats(std::string* value, Slice suffix);
  bool HandleSsTables(std::string* value, Slice suffix);
  bool HandleAggregatedTableProperties(std::string* value, Slice suffix);
  bool HandleAggregatedTablePropertiesAtLevel(std::string* value, Slice suffix);
  bool HandleNumImmutableMemTable(uint64_t* value, DBImpl* db,
                                  Version* version);
  bool HandleNumImmutableMemTableFlushed(uint64_t* value, DBImpl* db,
                                         Version* version);
  bool HandleMemTableFlushPending(uint64_t* value, DBImpl* db,
                                  Version* version);
  bool HandleNumRunningFlushes(uint64_t* value, DBImpl* db, Version* version);
  bool HandleCompactionPending(uint64_t* value, DBImpl* db, Version* version);
  bool HandleNumRunningCompactions(uint64_t* value, DBImpl* db,
                                   Version* version);
  bool HandleBackgroundErrors(uint64_t* value, DBImpl* db, Version* version);
  bool HandleCurSizeActiveMemTable(uint64_t* value, DBImpl* db,
                                   Version* version);
  bool HandleCurSizeAllMemTables(uint64_t* value, DBImpl* db, Version* version);
  bool HandleSizeAllMemTables(uint64_t* value, DBImpl* db, Version* version);
  bool HandleNumEntriesActiveMemTable(uint64_t* value, DBImpl* db,
                                      Version* version);
  bool HandleNumEntriesImmMemTables(uint64_t* value, DBImpl* db,
                                    Version* version);
  bool HandleNumDeletesActiveMemTable(uint64_t* value, DBImpl* db,
                                      Version* version);
  bool HandleNumDeletesImmMemTables(uint64_t* value, DBImpl* db,
                                    Version* version);
  bool HandleEstimateNumKeys(uint64_t* value, DBImpl* db, Version* version);
  bool HandleNumSnapshots(uint64_t* value, DBImpl* db, Version* version);
  bool HandleOldestSnapshotTime(uint64_t* value, DBImpl* db, Version* version);
  bool HandleNumLiveVersions(uint64_t* value, DBImpl* db, Version* version);
456 457
  bool HandleCurrentSuperVersionNumber(uint64_t* value, DBImpl* db,
                                       Version* version);
458 459 460 461 462 463 464 465 466 467
  bool HandleIsFileDeletionsEnabled(uint64_t* value, DBImpl* db,
                                    Version* version);
  bool HandleBaseLevel(uint64_t* value, DBImpl* db, Version* version);
  bool HandleTotalSstFilesSize(uint64_t* value, DBImpl* db, Version* version);
  bool HandleEstimatePendingCompactionBytes(uint64_t* value, DBImpl* db,
                                            Version* version);
  bool HandleEstimateTableReadersMem(uint64_t* value, DBImpl* db,
                                     Version* version);
  bool HandleEstimateLiveDataSize(uint64_t* value, DBImpl* db,
                                  Version* version);
468
  bool HandleMinLogNumberToKeep(uint64_t* value, DBImpl* db, Version* version);
469 470 471
  bool HandleActualDelayedWriteRate(uint64_t* value, DBImpl* db,
                                    Version* version);
  bool HandleIsWriteStopped(uint64_t* value, DBImpl* db, Version* version);
472

473 474 475 476 477 478 479
  // Total number of background errors encountered. Every time a flush task
  // or compaction task fails, this counter is incremented. The failure can
  // be caused by any possible reason, including file system errors, out of
  // resources, or input file corruption. Failing when retrying the same flush
  // or compaction will cause the counter to increase too.
  uint64_t bg_error_count_;

480
  const int number_levels_;
I
Igor Canadi 已提交
481
  Env* env_;
482
  ColumnFamilyData* cfd_;
S
Siying Dong 已提交
483
  uint64_t started_at_;
I
Igor Canadi 已提交
484 485
};

486 487 488 489 490
#else

class InternalStats {
 public:
  enum InternalCFStatsType {
491 492
    LEVEL0_SLOWDOWN_TOTAL,
    LEVEL0_SLOWDOWN_WITH_COMPACTION,
493
    MEMTABLE_COMPACTION,
494
    MEMTABLE_SLOWDOWN,
495 496
    LEVEL0_NUM_FILES_TOTAL,
    LEVEL0_NUM_FILES_WITH_COMPACTION,
497
    SOFT_PENDING_COMPACTION_BYTES_LIMIT,
498
    HARD_PENDING_COMPACTION_BYTES_LIMIT,
499 500
    WRITE_STALLS_ENUM_MAX,
    BYTES_FLUSHED,
501
    BYTES_INGESTED_ADD_FILE,
502 503 504
    INGESTED_NUM_FILES_TOTAL,
    INGESTED_LEVEL0_NUM_FILES_TOTAL,
    INGESTED_NUM_KEYS_TOTAL,
505 506 507 508 509 510 511 512 513 514 515
    INTERNAL_CF_STATS_ENUM_MAX,
  };

  enum InternalDBStatsType {
    WAL_FILE_BYTES,
    WAL_FILE_SYNCED,
    BYTES_WRITTEN,
    NUMBER_KEYS_WRITTEN,
    WRITE_DONE_BY_OTHER,
    WRITE_DONE_BY_SELF,
    WRITE_WITH_WAL,
S
sdong 已提交
516
    WRITE_STALL_MICROS,
517 518 519 520 521 522 523
    INTERNAL_DB_STATS_ENUM_MAX,
  };

  InternalStats(int num_levels, Env* env, ColumnFamilyData* cfd) {}

  struct CompactionStats {
    uint64_t micros;
524 525
    uint64_t bytes_read_non_output_levels;
    uint64_t bytes_read_output_level;
526
    uint64_t bytes_written;
527
    uint64_t bytes_moved;
528 529 530
    int num_input_files_in_non_output_levels;
    int num_input_files_in_output_level;
    int num_output_files;
531 532 533 534 535 536 537 538 539 540 541 542 543 544 545
    uint64_t num_input_records;
    uint64_t num_dropped_records;
    int count;

    explicit CompactionStats(int _count = 0) {}

    explicit CompactionStats(const CompactionStats& c) {}

    void Add(const CompactionStats& c) {}

    void Subtract(const CompactionStats& c) {}
  };

  void AddCompactionStats(int level, const CompactionStats& stats) {}

546 547
  void IncBytesMoved(int level, uint64_t amount) {}

548 549 550 551
  void AddCFStats(InternalCFStatsType type, uint64_t value) {}

  void AddDBStats(InternalDBStatsType type, uint64_t value) {}

552 553
  HistogramImpl* GetFileReadHist(int level) { return nullptr; }

554 555 556 557
  uint64_t GetBackgroundErrorCount() const { return 0; }

  uint64_t BumpAndGetBackgroundErrorCount() { return 0; }

558 559 560 561
  bool GetStringProperty(const DBPropertyInfo& property_info,
                         const Slice& property, std::string* value) {
    return false;
  }
562

563 564 565 566 567 568
  bool GetMapProperty(const DBPropertyInfo& property_info,
                      const Slice& property,
                      std::map<std::string, double>* value) {
    return false;
  }

569 570 571 572
  bool GetIntProperty(const DBPropertyInfo& property_info, uint64_t* value,
                      DBImpl* db) const {
    return false;
  }
573

574 575 576 577
  bool GetIntPropertyOutOfMutex(const DBPropertyInfo& property_info,
                                Version* version, uint64_t* value) const {
    return false;
  }
578 579 580
};
#endif  // !ROCKSDB_LITE

I
Igor Canadi 已提交
581
}  // namespace rocksdb