1 // Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
2 //  This source code is licensed under both the GPLv2 (found in the
3 //  COPYING file in the root directory) and Apache 2.0 License
4 //  (found in the LICENSE.Apache file in the root directory).
5 
6 package org.rocksdb;
7 
8 public enum HistogramType {
9 
10   DB_GET((byte) 0x0),
11 
12   DB_WRITE((byte) 0x1),
13 
14   COMPACTION_TIME((byte) 0x2),
15 
16   SUBCOMPACTION_SETUP_TIME((byte) 0x3),
17 
18   TABLE_SYNC_MICROS((byte) 0x4),
19 
20   COMPACTION_OUTFILE_SYNC_MICROS((byte) 0x5),
21 
22   WAL_FILE_SYNC_MICROS((byte) 0x6),
23 
24   MANIFEST_FILE_SYNC_MICROS((byte) 0x7),
25 
26   /**
27    * TIME SPENT IN IO DURING TABLE OPEN.
28    */
29   TABLE_OPEN_IO_MICROS((byte) 0x8),
30 
31   DB_MULTIGET((byte) 0x9),
32 
33   READ_BLOCK_COMPACTION_MICROS((byte) 0xA),
34 
35   READ_BLOCK_GET_MICROS((byte) 0xB),
36 
37   WRITE_RAW_BLOCK_MICROS((byte) 0xC),
38 
39   STALL_L0_SLOWDOWN_COUNT((byte) 0xD),
40 
41   STALL_MEMTABLE_COMPACTION_COUNT((byte) 0xE),
42 
43   STALL_L0_NUM_FILES_COUNT((byte) 0xF),
44 
45   HARD_RATE_LIMIT_DELAY_COUNT((byte) 0x10),
46 
47   SOFT_RATE_LIMIT_DELAY_COUNT((byte) 0x11),
48 
49   NUM_FILES_IN_SINGLE_COMPACTION((byte) 0x12),
50 
51   DB_SEEK((byte) 0x13),
52 
53   WRITE_STALL((byte) 0x14),
54 
55   SST_READ_MICROS((byte) 0x15),
56 
57   /**
58    * The number of subcompactions actually scheduled during a compaction.
59    */
60   NUM_SUBCOMPACTIONS_SCHEDULED((byte) 0x16),
61 
62   /**
63    * Value size distribution in each operation.
64    */
65   BYTES_PER_READ((byte) 0x17),
66   BYTES_PER_WRITE((byte) 0x18),
67   BYTES_PER_MULTIGET((byte) 0x19),
68 
69   /**
70    * number of bytes compressed.
71    */
72   BYTES_COMPRESSED((byte) 0x1A),
73 
74   /**
75    * number of bytes decompressed.
76    *
77    * number of bytes is when uncompressed; i.e. before/after respectively
78    */
79   BYTES_DECOMPRESSED((byte) 0x1B),
80 
81   COMPRESSION_TIMES_NANOS((byte) 0x1C),
82 
83   DECOMPRESSION_TIMES_NANOS((byte) 0x1D),
84 
85   READ_NUM_MERGE_OPERANDS((byte) 0x1E),
86 
87   /**
88    * Time spent flushing memtable to disk.
89    */
90   FLUSH_TIME((byte) 0x20),
91 
92   /**
93    * Size of keys written to BlobDB.
94    */
95   BLOB_DB_KEY_SIZE((byte) 0x21),
96 
97   /**
98    * Size of values written to BlobDB.
99    */
100   BLOB_DB_VALUE_SIZE((byte) 0x22),
101 
102   /**
103    * BlobDB Put/PutWithTTL/PutUntil/Write latency.
104    */
105   BLOB_DB_WRITE_MICROS((byte) 0x23),
106 
107   /**
108    * BlobDB Get lagency.
109    */
110   BLOB_DB_GET_MICROS((byte) 0x24),
111 
112   /**
113    * BlobDB MultiGet latency.
114    */
115   BLOB_DB_MULTIGET_MICROS((byte) 0x25),
116 
117   /**
118    * BlobDB Seek/SeekToFirst/SeekToLast/SeekForPrev latency.
119    */
120   BLOB_DB_SEEK_MICROS((byte) 0x26),
121 
122   /**
123    * BlobDB Next latency.
124    */
125   BLOB_DB_NEXT_MICROS((byte) 0x27),
126 
127   /**
128    * BlobDB Prev latency.
129    */
130   BLOB_DB_PREV_MICROS((byte) 0x28),
131 
132   /**
133    * Blob file write latency.
134    */
135   BLOB_DB_BLOB_FILE_WRITE_MICROS((byte) 0x29),
136 
137   /**
138    * Blob file read latency.
139    */
140   BLOB_DB_BLOB_FILE_READ_MICROS((byte) 0x2A),
141 
142   /**
143    * Blob file sync latency.
144    */
145   BLOB_DB_BLOB_FILE_SYNC_MICROS((byte) 0x2B),
146 
147   /**
148    * BlobDB garbage collection time.
149    */
150   BLOB_DB_GC_MICROS((byte) 0x2C),
151 
152   /**
153    * BlobDB compression time.
154    */
155   BLOB_DB_COMPRESSION_MICROS((byte) 0x2D),
156 
157   /**
158    * BlobDB decompression time.
159    */
160   BLOB_DB_DECOMPRESSION_MICROS((byte) 0x2E),
161 
162   // 0x1F for backwards compatibility on current minor version.
163   HISTOGRAM_ENUM_MAX((byte) 0x1F);
164 
165   private final byte value;
166 
HistogramType(final byte value)167   HistogramType(final byte value) {
168     this.value = value;
169   }
170 
171   /**
172    * Returns the byte value of the enumerations value
173    *
174    * @return byte representation
175    */
getValue()176   public byte getValue() {
177     return value;
178   }
179 
180   /**
181    * Get Histogram type by byte value.
182    *
183    * @param value byte representation of HistogramType.
184    *
185    * @return {@link org.rocksdb.HistogramType} instance.
186    * @throws java.lang.IllegalArgumentException if an invalid
187    *     value is provided.
188    */
getHistogramType(final byte value)189   public static HistogramType getHistogramType(final byte value) {
190     for (final HistogramType histogramType : HistogramType.values()) {
191       if (histogramType.getValue() == value) {
192         return histogramType;
193       }
194     }
195     throw new IllegalArgumentException(
196         "Illegal value provided for HistogramType.");
197   }
198 }
199