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 /** 9 * Compaction Priorities 10 */ 11 public enum CompactionPriority { 12 13 /** 14 * Slightly Prioritize larger files by size compensated by #deletes 15 */ 16 ByCompensatedSize((byte)0x0), 17 18 /** 19 * First compact files whose data's latest update time is oldest. 20 * Try this if you only update some hot keys in small ranges. 21 */ 22 OldestLargestSeqFirst((byte)0x1), 23 24 /** 25 * First compact files whose range hasn't been compacted to the next level 26 * for the longest. If your updates are random across the key space, 27 * write amplification is slightly better with this option. 28 */ 29 OldestSmallestSeqFirst((byte)0x2), 30 31 /** 32 * First compact files whose ratio between overlapping size in next level 33 * and its size is the smallest. It in many cases can optimize write 34 * amplification. 35 */ 36 MinOverlappingRatio((byte)0x3); 37 38 39 private final byte value; 40 CompactionPriority(final byte value)41 CompactionPriority(final byte value) { 42 this.value = value; 43 } 44 45 /** 46 * Returns the byte value of the enumerations value 47 * 48 * @return byte representation 49 */ getValue()50 public byte getValue() { 51 return value; 52 } 53 54 /** 55 * Get CompactionPriority by byte value. 56 * 57 * @param value byte representation of CompactionPriority. 58 * 59 * @return {@link org.rocksdb.CompactionPriority} instance or null. 60 * @throws java.lang.IllegalArgumentException if an invalid 61 * value is provided. 62 */ getCompactionPriority(final byte value)63 public static CompactionPriority getCompactionPriority(final byte value) { 64 for (final CompactionPriority compactionPriority : 65 CompactionPriority.values()) { 66 if (compactionPriority.getValue() == value){ 67 return compactionPriority; 68 } 69 } 70 throw new IllegalArgumentException( 71 "Illegal value provided for CompactionPriority."); 72 } 73 } 74