Skip to content

Commit a3afb05

Browse files
authored
[ISSUE #9025] [RIP-73] Modify Pop Consumption rocksdb init config (#9100)
1 parent f32fe78 commit a3afb05

File tree

2 files changed

+54
-8
lines changed

2 files changed

+54
-8
lines changed

Diff for: broker/src/main/java/org/apache/rocketmq/broker/pop/PopConsumerRocksdbStore.java

+3-8
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.rocksdb.ColumnFamilyHandle;
2929
import org.rocksdb.ColumnFamilyOptions;
3030
import org.rocksdb.CompactRangeOptions;
31-
import org.rocksdb.DBOptions;
3231
import org.rocksdb.RocksDB;
3332
import org.rocksdb.RocksDBException;
3433
import org.rocksdb.RocksIterator;
@@ -63,7 +62,7 @@ protected void initOptions() {
6362
this.deleteOptions = new WriteOptions();
6463
this.deleteOptions.setSync(false);
6564
this.deleteOptions.setLowPri(true);
66-
this.deleteOptions.setDisableWAL(true);
65+
this.deleteOptions.setDisableWAL(false);
6766
this.deleteOptions.setNoSlowdown(false);
6867

6968
this.compactRangeOptions = new CompactRangeOptions();
@@ -83,15 +82,11 @@ protected boolean postLoad() {
8382
initOptions();
8483

8584
// init column family here
86-
ColumnFamilyOptions defaultOptions = new ColumnFamilyOptions().optimizeForSmallDb();
87-
ColumnFamilyOptions popStateOptions = new ColumnFamilyOptions().optimizeForSmallDb();
85+
ColumnFamilyOptions defaultOptions = RocksDBOptionsFactory.createPopCFOptions();
86+
ColumnFamilyOptions popStateOptions = RocksDBOptionsFactory.createPopCFOptions();
8887
this.cfOptions.add(defaultOptions);
8988
this.cfOptions.add(popStateOptions);
9089

91-
this.options = new DBOptions()
92-
.setCreateIfMissing(true)
93-
.setCreateMissingColumnFamilies(true);
94-
9590
List<ColumnFamilyDescriptor> cfDescriptors = new ArrayList<>();
9691
cfDescriptors.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY, defaultOptions));
9792
cfDescriptors.add(new ColumnFamilyDescriptor(COLUMN_FAMILY_NAME, popStateOptions));

Diff for: store/src/main/java/org/apache/rocketmq/store/rocksdb/RocksDBOptionsFactory.java

+51
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,57 @@ public static ColumnFamilyOptions createOffsetCFOptions() {
131131
setInplaceUpdateSupport(true);
132132
}
133133

134+
public static ColumnFamilyOptions createPopCFOptions() {
135+
BlockBasedTableConfig blockBasedTableConfig = new BlockBasedTableConfig()
136+
.setFormatVersion(5)
137+
.setIndexType(IndexType.kBinarySearch)
138+
.setDataBlockIndexType(DataBlockIndexType.kDataBlockBinaryAndHash)
139+
.setDataBlockHashTableUtilRatio(0.75)
140+
.setBlockSize(32 * SizeUnit.KB)
141+
.setMetadataBlockSize(4 * SizeUnit.KB)
142+
.setFilterPolicy(new BloomFilter(16, false))
143+
.setCacheIndexAndFilterBlocks(false)
144+
.setCacheIndexAndFilterBlocksWithHighPriority(true)
145+
.setPinL0FilterAndIndexBlocksInCache(false)
146+
.setPinTopLevelIndexAndFilter(true)
147+
.setBlockCache(new LRUCache(1024 * SizeUnit.MB, 8, false))
148+
.setWholeKeyFiltering(true);
149+
150+
CompactionOptionsUniversal compactionOption = new CompactionOptionsUniversal()
151+
.setSizeRatio(100)
152+
.setMaxSizeAmplificationPercent(25)
153+
.setAllowTrivialMove(true)
154+
.setMinMergeWidth(2)
155+
.setMaxMergeWidth(Integer.MAX_VALUE)
156+
.setStopStyle(CompactionStopStyle.CompactionStopStyleTotalSize)
157+
.setCompressionSizePercent(-1);
158+
159+
//noinspection resource
160+
return new ColumnFamilyOptions()
161+
.setMaxWriteBufferNumber(4)
162+
.setWriteBufferSize(128 * SizeUnit.MB)
163+
.setMinWriteBufferNumberToMerge(1)
164+
.setTableFormatConfig(blockBasedTableConfig)
165+
.setMemTableConfig(new SkipListMemTableConfig())
166+
.setCompressionType(CompressionType.NO_COMPRESSION)
167+
.setBottommostCompressionType(CompressionType.NO_COMPRESSION)
168+
.setNumLevels(7)
169+
.setCompactionPriority(CompactionPriority.MinOverlappingRatio)
170+
.setCompactionStyle(CompactionStyle.UNIVERSAL)
171+
.setCompactionOptionsUniversal(compactionOption)
172+
.setMaxCompactionBytes(100 * SizeUnit.GB)
173+
.setSoftPendingCompactionBytesLimit(100 * SizeUnit.GB)
174+
.setHardPendingCompactionBytesLimit(256 * SizeUnit.GB)
175+
.setLevel0FileNumCompactionTrigger(2)
176+
.setLevel0SlowdownWritesTrigger(8)
177+
.setLevel0StopWritesTrigger(10)
178+
.setTargetFileSizeBase(256 * SizeUnit.MB)
179+
.setTargetFileSizeMultiplier(2)
180+
.setMergeOperator(new StringAppendOperator())
181+
.setReportBgIoStats(true)
182+
.setOptimizeFiltersForHits(true);
183+
}
184+
134185
/**
135186
* Create a rocksdb db options, the user must take care to close it after closing db.
136187
* @return

0 commit comments

Comments
 (0)