Skip to content

Commit 97dc272

Browse files
rahkuinikep
authored andcommitted
Adds capability to set different BottommostLevelCompaction option for MyRocks Manual Compaction
Summary: Currently BottommostLevelCompaction is set to default kForceOptimized for manual compaction. This is fine usually. However, for privacy triggered compactions, it does not make much sense, because it compacts Lmax SST files that do not have any overlapping key updates at all. This adds a session variable to specify the option for bottommost level compaction before triggering manual compaction. Reviewed By: yoshinorim, yizhang82 Differential Revision: D27665464
1 parent 125f985 commit 97dc272

9 files changed

+272
-9
lines changed

mysql-test/r/mysqld--help-notwin.result

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1927,6 +1927,9 @@ The following options may be given as the first argument:
19271927
DBOptions::log_file_time_to_roll for RocksDB
19281928
--rocksdb-manifest-preallocation-size=#
19291929
DBOptions::manifest_preallocation_size for RocksDB
1930+
--rocksdb-manual-compaction-bottommost-level=name
1931+
Option for bottommost level compaction during manual
1932+
compaction
19301933
--rocksdb-manual-compaction-threads=#
19311934
How many rocksdb threads to run for manual compactions
19321935
--rocksdb-manual-wal-flush
@@ -3275,6 +3278,7 @@ rocksdb-lock-wait-timeout 1
32753278
rocksdb-locks ON
32763279
rocksdb-log-file-time-to-roll 0
32773280
rocksdb-manifest-preallocation-size 4194304
3281+
rocksdb-manual-compaction-bottommost-level kForceOptimized
32783282
rocksdb-manual-compaction-threads 0
32793283
rocksdb-manual-wal-flush TRUE
32803284
rocksdb-master-skip-tx-api FALSE
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
CREATE PROCEDURE compact_start()
2+
BEGIN
3+
select variable_value into @c from performance_schema.global_status where variable_name='rocksdb_compact_write_bytes';
4+
END//
5+
CREATE PROCEDURE compact_end()
6+
BEGIN
7+
select case when variable_value-@c > 0 then 'true' else 'false' end as checked from performance_schema.global_status where variable_name='rocksdb_compact_write_bytes';
8+
END//
9+
DROP TABLE IF EXISTS t1;
10+
CREATE TABLE t1 (
11+
a int not null,
12+
b int not null,
13+
primary key (a,b),
14+
key (b)
15+
) ENGINE=RocksDB;
16+
DELETE FROM t1;
17+
set @@session.rocksdb_manual_compaction_bottommost_level='kSkip';
18+
call compact_start();
19+
set @@global.rocksdb_compact_cf = 'default';
20+
call compact_end();
21+
checked
22+
true
23+
set @@session.rocksdb_manual_compaction_bottommost_level='kSkip';
24+
call compact_start();
25+
set @@global.rocksdb_compact_cf = 'default';
26+
call compact_end();
27+
checked
28+
false
29+
set @@session.rocksdb_manual_compaction_bottommost_level='kForceOptimized';
30+
call compact_start();
31+
set @@global.rocksdb_compact_cf = 'default';
32+
call compact_end();
33+
checked
34+
true
35+
DROP PROCEDURE compact_start;
36+
DROP PROCEDURE compact_end;
37+
drop table t1;

mysql-test/suite/rocksdb/r/rocksdb.result

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -973,6 +973,7 @@ rocksdb_lock_scanned_rows OFF
973973
rocksdb_lock_wait_timeout 1
974974
rocksdb_log_file_time_to_roll 0
975975
rocksdb_manifest_preallocation_size 4194304
976+
rocksdb_manual_compaction_bottommost_level kForceOptimized
976977
rocksdb_manual_compaction_threads 0
977978
rocksdb_manual_wal_flush ON
978979
rocksdb_master_skip_tx_api OFF
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
--rocksdb_max_subcompactions=1
2+
--rocksdb_default_cf_options=target_file_size_base=100k;max_bytes_for_level_multiplier=1;max_bytes_for_level_base=1m;target_file_size_multiplier=1
3+
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
--source include/have_rocksdb.inc
2+
3+
DELIMITER //;
4+
CREATE PROCEDURE compact_start()
5+
BEGIN
6+
select variable_value into @c from performance_schema.global_status where variable_name='rocksdb_compact_write_bytes';
7+
END//
8+
CREATE PROCEDURE compact_end()
9+
BEGIN
10+
select case when variable_value-@c > 0 then 'true' else 'false' end as checked from performance_schema.global_status where variable_name='rocksdb_compact_write_bytes';
11+
END//
12+
DELIMITER ;//
13+
14+
--disable_warnings
15+
DROP TABLE IF EXISTS t1;
16+
--enable_warnings
17+
18+
CREATE TABLE t1 (
19+
a int not null,
20+
b int not null,
21+
primary key (a,b),
22+
key (b)
23+
) ENGINE=RocksDB;
24+
25+
# Populate tables
26+
let $max = 1000;
27+
let $table = t1;
28+
--source drop_table_repopulate_table.inc
29+
30+
# compact to move all data in files in Lmax level
31+
set @@session.rocksdb_manual_compaction_bottommost_level='kSkip';
32+
call compact_start();
33+
set @@global.rocksdb_compact_cf = 'default';
34+
call compact_end(); # should return true as compaction of lower levels is performed
35+
36+
# skip compaction of files in bottommost level i.e. Lmax->Lmax compaction and ensure rocksdb_compact_write_byte
37+
# does not increase after compaction
38+
set @@session.rocksdb_manual_compaction_bottommost_level='kSkip';
39+
call compact_start();
40+
set @@global.rocksdb_compact_cf = 'default';
41+
call compact_end(); # should return false as files only in bottommost layer
42+
43+
# restore 'kForceOptimized' default setting and check that value of rocksdb_compact_write_byte increses after compaction
44+
set @@session.rocksdb_manual_compaction_bottommost_level='kForceOptimized';
45+
call compact_start();
46+
set @@global.rocksdb_compact_cf = 'default';
47+
call compact_end(); # should return true
48+
49+
# cleanup
50+
DROP PROCEDURE compact_start;
51+
DROP PROCEDURE compact_end;
52+
drop table t1;
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam;
2+
INSERT INTO valid_values VALUES('kSkip');
3+
INSERT INTO valid_values VALUES('kIfHaveCompactionFilter');
4+
INSERT INTO valid_values VALUES('kForce');
5+
INSERT INTO valid_values VALUES('kForceOptimized');
6+
CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam;
7+
INSERT INTO invalid_values VALUES('\'aaa\'');
8+
SET @start_global_value = @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
9+
SELECT @start_global_value;
10+
@start_global_value
11+
kForceOptimized
12+
SET @start_session_value = @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
13+
SELECT @start_session_value;
14+
@start_session_value
15+
kForceOptimized
16+
'# Setting to valid values in global scope#'
17+
"Trying to set variable @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL to kSkip"
18+
SET @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = kSkip;
19+
SELECT @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
20+
@@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
21+
kSkip
22+
"Setting the global scope variable back to default"
23+
SET @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = DEFAULT;
24+
SELECT @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
25+
@@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
26+
kForceOptimized
27+
"Trying to set variable @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL to kIfHaveCompactionFilter"
28+
SET @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = kIfHaveCompactionFilter;
29+
SELECT @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
30+
@@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
31+
kIfHaveCompactionFilter
32+
"Setting the global scope variable back to default"
33+
SET @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = DEFAULT;
34+
SELECT @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
35+
@@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
36+
kForceOptimized
37+
"Trying to set variable @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL to kForce"
38+
SET @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = kForce;
39+
SELECT @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
40+
@@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
41+
kForce
42+
"Setting the global scope variable back to default"
43+
SET @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = DEFAULT;
44+
SELECT @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
45+
@@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
46+
kForceOptimized
47+
"Trying to set variable @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL to kForceOptimized"
48+
SET @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = kForceOptimized;
49+
SELECT @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
50+
@@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
51+
kForceOptimized
52+
"Setting the global scope variable back to default"
53+
SET @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = DEFAULT;
54+
SELECT @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
55+
@@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
56+
kForceOptimized
57+
'# Setting to valid values in session scope#'
58+
"Trying to set variable @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL to kSkip"
59+
SET @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = kSkip;
60+
SELECT @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
61+
@@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
62+
kSkip
63+
"Setting the session scope variable back to default"
64+
SET @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = DEFAULT;
65+
SELECT @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
66+
@@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
67+
kForceOptimized
68+
"Trying to set variable @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL to kIfHaveCompactionFilter"
69+
SET @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = kIfHaveCompactionFilter;
70+
SELECT @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
71+
@@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
72+
kIfHaveCompactionFilter
73+
"Setting the session scope variable back to default"
74+
SET @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = DEFAULT;
75+
SELECT @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
76+
@@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
77+
kForceOptimized
78+
"Trying to set variable @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL to kForce"
79+
SET @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = kForce;
80+
SELECT @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
81+
@@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
82+
kForce
83+
"Setting the session scope variable back to default"
84+
SET @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = DEFAULT;
85+
SELECT @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
86+
@@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
87+
kForceOptimized
88+
"Trying to set variable @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL to kForceOptimized"
89+
SET @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = kForceOptimized;
90+
SELECT @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
91+
@@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
92+
kForceOptimized
93+
"Setting the session scope variable back to default"
94+
SET @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = DEFAULT;
95+
SELECT @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
96+
@@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
97+
kForceOptimized
98+
'# Testing with invalid values in global scope #'
99+
"Trying to set variable @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL to 'aaa'"
100+
SET @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = 'aaa';
101+
Got one of the listed errors
102+
SELECT @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
103+
@@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
104+
kForceOptimized
105+
SET @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = @start_global_value;
106+
SELECT @@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
107+
@@global.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
108+
kForceOptimized
109+
SET @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL = @start_session_value;
110+
SELECT @@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL;
111+
@@session.ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
112+
kForceOptimized
113+
DROP TABLE valid_values;
114+
DROP TABLE invalid_values;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
--source include/have_rocksdb.inc
2+
3+
CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam;
4+
INSERT INTO valid_values VALUES('kSkip');
5+
INSERT INTO valid_values VALUES('kIfHaveCompactionFilter');
6+
INSERT INTO valid_values VALUES('kForce');
7+
INSERT INTO valid_values VALUES('kForceOptimized');
8+
9+
CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam;
10+
INSERT INTO invalid_values VALUES('\'aaa\'');
11+
12+
--let $sys_var=ROCKSDB_MANUAL_COMPACTION_BOTTOMMOST_LEVEL
13+
--let $read_only=0
14+
--let $session=1
15+
--source ../include/rocksdb_sys_var.inc
16+
17+
DROP TABLE valid_values;
18+
DROP TABLE invalid_values;

storage/rocksdb/ha_rocksdb.cc

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -247,10 +247,12 @@ static handler *rocksdb_create_handler(my_core::handlerton *hton,
247247
my_core::MEM_ROOT *mem_root);
248248

249249
static rocksdb::CompactRangeOptions getCompactRangeOptions(
250-
int concurrency = 0) {
250+
int concurrency = 0,
251+
rocksdb::BottommostLevelCompaction bottommost_level_compaction =
252+
rocksdb::BottommostLevelCompaction::kForceOptimized) {
251253
rocksdb::CompactRangeOptions compact_range_options;
252254
compact_range_options.bottommost_level_compaction =
253-
rocksdb::BottommostLevelCompaction::kForceOptimized;
255+
bottommost_level_compaction;
254256
compact_range_options.exclusive_manual_compaction = false;
255257
if (concurrency > 0) {
256258
compact_range_options.max_subcompactions = concurrency;
@@ -1004,6 +1006,16 @@ static TYPELIB info_log_level_typelib = {
10041006
array_elements(info_log_level_names) - 1, "info_log_level_typelib",
10051007
info_log_level_names, nullptr};
10061008

1009+
/* This enum needs to be kept up to date with rocksdb::BottommostLevelCompaction
1010+
*/
1011+
static const char *bottommost_level_compaction_names[] = {
1012+
"kSkip", "kIfHaveCompactionFilter", "kForce", "kForceOptimized", NullS};
1013+
1014+
static TYPELIB bottommost_level_compaction_typelib = {
1015+
array_elements(bottommost_level_compaction_names) - 1,
1016+
"bottommost_level_compaction_typelib", bottommost_level_compaction_names,
1017+
nullptr};
1018+
10071019
static void rocksdb_set_rocksdb_info_log_level(
10081020
THD *const thd MY_ATTRIBUTE((__unused__)),
10091021
struct SYS_VAR *const var MY_ATTRIBUTE((__unused__)),
@@ -1384,6 +1396,15 @@ static MYSQL_THDVAR_INT(
13841396
/* default rocksdb.dboption max_subcompactions */ 0,
13851397
/* min */ 0, /* max */ 128, 0);
13861398

1399+
static MYSQL_THDVAR_ENUM(
1400+
manual_compaction_bottommost_level, PLUGIN_VAR_RQCMDARG,
1401+
"Option for bottommost level compaction during manual "
1402+
"compaction",
1403+
nullptr, nullptr,
1404+
/* default */
1405+
(ulong)rocksdb::BottommostLevelCompaction::kForceOptimized,
1406+
&bottommost_level_compaction_typelib);
1407+
13871408
static MYSQL_SYSVAR_BOOL(
13881409
create_if_missing,
13891410
*reinterpret_cast<bool *>(&rocksdb_db_options->create_if_missing),
@@ -2598,6 +2619,7 @@ static struct SYS_VAR *rocksdb_system_variables[] = {
25982619
MYSQL_SYSVAR(debug_manual_compaction_delay),
25992620
MYSQL_SYSVAR(max_manual_compactions),
26002621
MYSQL_SYSVAR(manual_compaction_threads),
2622+
MYSQL_SYSVAR(manual_compaction_bottommost_level),
26012623
MYSQL_SYSVAR(rollback_on_timeout),
26022624

26032625
MYSQL_SYSVAR(enable_insert_with_update_caching),
@@ -2641,8 +2663,13 @@ static int rocksdb_compact_column_family(
26412663

26422664
auto cfh = cf_manager.get_cf(cf_name);
26432665
if (cfh != nullptr && rdb != nullptr) {
2666+
rocksdb::BottommostLevelCompaction bottommost_level_compaction =
2667+
(rocksdb::BottommostLevelCompaction)THDVAR(
2668+
thd, manual_compaction_bottommost_level);
2669+
26442670
int mc_id = rdb_mc_thread.request_manual_compaction(
2645-
cfh, nullptr, nullptr, THDVAR(thd, manual_compaction_threads));
2671+
cfh, nullptr, nullptr, THDVAR(thd, manual_compaction_threads),
2672+
bottommost_level_compaction);
26462673
if (mc_id == -1) {
26472674
my_error(ER_INTERNAL_ERROR, MYF(0),
26482675
"Can't schedule more manual compactions. "
@@ -15044,8 +15071,9 @@ void Rdb_manual_compaction_thread::run() {
1504415071
// it is cancelled by CancelAllBackgroundWork, then status is
1504515072
// set to shutdownInProgress.
1504615073
const rocksdb::Status s =
15047-
rdb->CompactRange(getCompactRangeOptions(mcr.concurrency), mcr.cf.get(),
15048-
mcr.start, mcr.limit);
15074+
rdb->CompactRange(getCompactRangeOptions(
15075+
mcr.concurrency, mcr.bottommost_level_compaction),
15076+
mcr.cf.get(), mcr.start, mcr.limit);
1504915077

1505015078
rocksdb_manual_compactions_running--;
1505115079
if (s.ok()) {
@@ -15107,7 +15135,8 @@ void Rdb_manual_compaction_thread::clear_manual_compaction_request(
1510715135

1510815136
int Rdb_manual_compaction_thread::request_manual_compaction(
1510915137
std::shared_ptr<rocksdb::ColumnFamilyHandle> cf, rocksdb::Slice *start,
15110-
rocksdb::Slice *limit, int concurrency) {
15138+
rocksdb::Slice *limit, int concurrency,
15139+
rocksdb::BottommostLevelCompaction bottommost_level_compaction) {
1511115140
int mc_id = -1;
1511215141
RDB_MUTEX_LOCK_CHECK(m_mc_mutex);
1511315142
if (m_requests.size() >= rocksdb_max_manual_compactions) {
@@ -15121,6 +15150,7 @@ int Rdb_manual_compaction_thread::request_manual_compaction(
1512115150
mcr.start = start;
1512215151
mcr.limit = limit;
1512315152
mcr.concurrency = concurrency;
15153+
mcr.bottommost_level_compaction = bottommost_level_compaction;
1512415154
m_requests.insert(std::make_pair(mcr.mc_id, mcr));
1512515155
RDB_MUTEX_UNLOCK_CHECK(m_mc_mutex);
1512615156
return mc_id;

storage/rocksdb/rdb_threads.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,8 @@ class Rdb_manual_compaction_thread : public Rdb_thread {
179179
rocksdb::Slice *start;
180180
rocksdb::Slice *limit;
181181
int concurrency = 0;
182+
rocksdb::BottommostLevelCompaction bottommost_level_compaction =
183+
rocksdb::BottommostLevelCompaction::kForceOptimized;
182184
};
183185

184186
int m_latest_mc_id;
@@ -195,9 +197,11 @@ class Rdb_manual_compaction_thread : public Rdb_thread {
195197
virtual void on_uninit() override { mysql_mutex_destroy(&m_mc_mutex); }
196198

197199
virtual void run() override;
198-
int request_manual_compaction(std::shared_ptr<rocksdb::ColumnFamilyHandle> cf,
199-
rocksdb::Slice *start, rocksdb::Slice *limit,
200-
int concurrency = 0);
200+
int request_manual_compaction(
201+
std::shared_ptr<rocksdb::ColumnFamilyHandle> cf, rocksdb::Slice *start,
202+
rocksdb::Slice *limit, int concurrency = 0,
203+
rocksdb::BottommostLevelCompaction bottommost_level_compaction =
204+
rocksdb::BottommostLevelCompaction::kForceOptimized);
201205
bool is_manual_compaction_finished(int mc_id);
202206
void clear_manual_compaction_request(int mc_id, bool init_only = false);
203207
void clear_all_manual_compaction_requests();

0 commit comments

Comments
 (0)