[RocksJava] OptimizeFiltersForHits
Summary: Added optimize_filters_for_hits option. Test Plan: make clean jclean rocksdbjava jtest mvn -f rocksjni.pom package Reviewers: adamretter, yhchiang, ankgup87 Subscribers: dhruba Differential Revision: https://reviews.facebook.net/D35013
This commit is contained in:
parent
58878f1c6a
commit
04778a94c5
@ -1731,6 +1731,30 @@ void Java_org_rocksdb_Options_setMinPartialMergeOperands(
|
|||||||
static_cast<int32_t>(jmin_partial_merge_operands);
|
static_cast<int32_t>(jmin_partial_merge_operands);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_rocksdb_Options
|
||||||
|
* Method: optimizeFiltersForHits
|
||||||
|
* Signature: (J)Z
|
||||||
|
*/
|
||||||
|
jboolean Java_org_rocksdb_Options_optimizeFiltersForHits(
|
||||||
|
JNIEnv* env, jobject jobj, jlong jhandle) {
|
||||||
|
return reinterpret_cast<rocksdb::Options*>(
|
||||||
|
jhandle)->optimize_filters_for_hits;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_rocksdb_Options
|
||||||
|
* Method: setOptimizeFiltersForHits
|
||||||
|
* Signature: (JZ)V
|
||||||
|
*/
|
||||||
|
void Java_org_rocksdb_Options_setOptimizeFiltersForHits(
|
||||||
|
JNIEnv* env, jobject jobj, jlong jhandle,
|
||||||
|
jboolean joptimize_filters_for_hits) {
|
||||||
|
reinterpret_cast<rocksdb::Options*>(
|
||||||
|
jhandle)->optimize_filters_for_hits =
|
||||||
|
static_cast<bool>(joptimize_filters_for_hits);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Method: optimizeForPointLookup
|
* Method: optimizeForPointLookup
|
||||||
* Signature: (JJ)V
|
* Signature: (JJ)V
|
||||||
@ -2778,6 +2802,30 @@ void Java_org_rocksdb_ColumnFamilyOptions_setMinPartialMergeOperands(
|
|||||||
static_cast<int32_t>(jmin_partial_merge_operands);
|
static_cast<int32_t>(jmin_partial_merge_operands);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_rocksdb_ColumnFamilyOptions
|
||||||
|
* Method: optimizeFiltersForHits
|
||||||
|
* Signature: (J)Z
|
||||||
|
*/
|
||||||
|
jboolean Java_org_rocksdb_ColumnFamilyOptions_optimizeFiltersForHits(
|
||||||
|
JNIEnv* env, jobject jobj, jlong jhandle) {
|
||||||
|
return reinterpret_cast<rocksdb::ColumnFamilyOptions*>(
|
||||||
|
jhandle)->optimize_filters_for_hits;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_rocksdb_ColumnFamilyOptions
|
||||||
|
* Method: setOptimizeFiltersForHits
|
||||||
|
* Signature: (JZ)V
|
||||||
|
*/
|
||||||
|
void Java_org_rocksdb_ColumnFamilyOptions_setOptimizeFiltersForHits(
|
||||||
|
JNIEnv* env, jobject jobj, jlong jhandle,
|
||||||
|
jboolean joptimize_filters_for_hits) {
|
||||||
|
reinterpret_cast<rocksdb::ColumnFamilyOptions*>(
|
||||||
|
jhandle)->optimize_filters_for_hits =
|
||||||
|
static_cast<bool>(joptimize_filters_for_hits);
|
||||||
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
// rocksdb::DBOptions
|
// rocksdb::DBOptions
|
||||||
|
|
||||||
|
@ -580,6 +580,18 @@ public class ColumnFamilyOptions extends RocksObject
|
|||||||
return minPartialMergeOperands(nativeHandle_);
|
return minPartialMergeOperands(nativeHandle_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ColumnFamilyOptions setOptimizeFiltersForHits(
|
||||||
|
final boolean optimizeFiltersForHits) {
|
||||||
|
setOptimizeFiltersForHits(nativeHandle_, optimizeFiltersForHits);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean optimizeFiltersForHits() {
|
||||||
|
return optimizeFiltersForHits(nativeHandle_);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Release the memory allocated for the current instance
|
* Release the memory allocated for the current instance
|
||||||
* in the c++ side.
|
* in the c++ side.
|
||||||
@ -721,6 +733,9 @@ public class ColumnFamilyOptions extends RocksObject
|
|||||||
private native void setMinPartialMergeOperands(
|
private native void setMinPartialMergeOperands(
|
||||||
long handle, int minPartialMergeOperands);
|
long handle, int minPartialMergeOperands);
|
||||||
private native int minPartialMergeOperands(long handle);
|
private native int minPartialMergeOperands(long handle);
|
||||||
|
private native void setOptimizeFiltersForHits(long handle,
|
||||||
|
boolean optimizeFiltersForHits);
|
||||||
|
private native boolean optimizeFiltersForHits(long handle);
|
||||||
|
|
||||||
MemTableConfig memTableConfig_;
|
MemTableConfig memTableConfig_;
|
||||||
TableFormatConfig tableFormatConfig_;
|
TableFormatConfig tableFormatConfig_;
|
||||||
|
@ -975,6 +975,38 @@ public interface ColumnFamilyOptionsInterface {
|
|||||||
*/
|
*/
|
||||||
int minPartialMergeOperands();
|
int minPartialMergeOperands();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>This flag specifies that the implementation should optimize the filters
|
||||||
|
* mainly for cases where keys are found rather than also optimize for keys
|
||||||
|
* missed. This would be used in cases where the application knows that
|
||||||
|
* there are very few misses or the performance in the case of misses is not
|
||||||
|
* important.</p>
|
||||||
|
*
|
||||||
|
* <p>For now, this flag allows us to not store filters for the last level i.e
|
||||||
|
* the largest level which contains data of the LSM store. For keys which
|
||||||
|
* are hits, the filters in this level are not useful because we will search
|
||||||
|
* for the data anyway.</p>
|
||||||
|
*
|
||||||
|
* <p><strong>NOTE</strong>: the filters in other levels are still useful
|
||||||
|
* even for key hit because they tell us whether to look in that level or go
|
||||||
|
* to the higher level.</p>
|
||||||
|
*
|
||||||
|
* <p>Default: false<p>
|
||||||
|
*
|
||||||
|
* @param optimizeFiltersForHits boolean value indicating if this flag is set.
|
||||||
|
* @return the reference to the current option.
|
||||||
|
*/
|
||||||
|
Object setOptimizeFiltersForHits(boolean optimizeFiltersForHits);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Returns the current state of the {@code optimize_filters_for_hits}
|
||||||
|
* setting.</p>
|
||||||
|
*
|
||||||
|
* @return boolean value indicating if the flag
|
||||||
|
* {@code optimize_filters_for_hits} was set.
|
||||||
|
*/
|
||||||
|
boolean optimizeFiltersForHits();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default memtable memory budget used with the following methods:
|
* Default memtable memory budget used with the following methods:
|
||||||
*
|
*
|
||||||
|
@ -1044,6 +1044,18 @@ public class Options extends RocksObject
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Options setOptimizeFiltersForHits(
|
||||||
|
final boolean optimizeFiltersForHits) {
|
||||||
|
setOptimizeFiltersForHits(nativeHandle_, optimizeFiltersForHits);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean optimizeFiltersForHits() {
|
||||||
|
return optimizeFiltersForHits(nativeHandle_);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Release the memory allocated for the current instance
|
* Release the memory allocated for the current instance
|
||||||
* in the c++ side.
|
* in the c++ side.
|
||||||
@ -1268,6 +1280,9 @@ public class Options extends RocksObject
|
|||||||
private native void setMinPartialMergeOperands(
|
private native void setMinPartialMergeOperands(
|
||||||
long handle, int minPartialMergeOperands);
|
long handle, int minPartialMergeOperands);
|
||||||
private native int minPartialMergeOperands(long handle);
|
private native int minPartialMergeOperands(long handle);
|
||||||
|
private native void setOptimizeFiltersForHits(long handle,
|
||||||
|
boolean optimizeFiltersForHits);
|
||||||
|
private native boolean optimizeFiltersForHits(long handle);
|
||||||
// instance variables
|
// instance variables
|
||||||
RocksEnv env_;
|
RocksEnv env_;
|
||||||
MemTableConfig memTableConfig_;
|
MemTableConfig memTableConfig_;
|
||||||
|
@ -538,6 +538,21 @@ public class ColumnFamilyOptionsTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void optimizeFiltersForHits() {
|
||||||
|
ColumnFamilyOptions opt = null;
|
||||||
|
try {
|
||||||
|
boolean aBoolean = rand.nextBoolean();
|
||||||
|
opt = new ColumnFamilyOptions();
|
||||||
|
opt.setOptimizeFiltersForHits(aBoolean);
|
||||||
|
assertThat(opt.optimizeFiltersForHits()).isEqualTo(aBoolean);
|
||||||
|
} finally {
|
||||||
|
if (opt != null) {
|
||||||
|
opt.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void memTable() throws RocksDBException {
|
public void memTable() throws RocksDBException {
|
||||||
ColumnFamilyOptions opt = null;
|
ColumnFamilyOptions opt = null;
|
||||||
|
@ -500,6 +500,21 @@ public class OptionsTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void optimizeFiltersForHits() {
|
||||||
|
Options opt = null;
|
||||||
|
try {
|
||||||
|
boolean aBoolean = rand.nextBoolean();
|
||||||
|
opt = new Options();
|
||||||
|
opt.setOptimizeFiltersForHits(aBoolean);
|
||||||
|
assertThat(opt.optimizeFiltersForHits()).isEqualTo(aBoolean);
|
||||||
|
} finally {
|
||||||
|
if (opt != null) {
|
||||||
|
opt.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void createIfMissing() {
|
public void createIfMissing() {
|
||||||
Options opt = null;
|
Options opt = null;
|
||||||
|
Loading…
Reference in New Issue
Block a user