]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/rocksdb/java/src/main/java/org/rocksdb/IndexType.java
import quincy beta 17.1.0
[ceph.git] / ceph / src / rocksdb / java / src / main / java / org / rocksdb / IndexType.java
index 04e481465833d1bdece01a0d796d81a770568fe6..162edad1bb4fb4fd910549851d06ed2cce1fa8f7 100644 (file)
@@ -22,7 +22,21 @@ public enum IndexType {
   /**
    * A two-level index implementation. Both levels are binary search indexes.
    */
-  kTwoLevelIndexSearch((byte) 2);
+  kTwoLevelIndexSearch((byte) 2),
+  /**
+   * Like {@link #kBinarySearch}, but index also contains first key of each block.
+   * This allows iterators to defer reading the block until it's actually
+   * needed. May significantly reduce read amplification of short range scans.
+   * Without it, iterator seek usually reads one block from each level-0 file
+   * and from each level, which may be expensive.
+   * Works best in combination with:
+   *   - IndexShorteningMode::kNoShortening,
+   *   - custom FlushBlockPolicy to cut blocks at some meaningful boundaries,
+   *     e.g. when prefix changes.
+   * Makes the index significantly bigger (2x or more), especially when keys
+   * are long.
+   */
+  kBinarySearchWithFirstKey((byte) 3);
 
   /**
    * Returns the byte value of the enumerations value