Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Large .sst and .log files (unsure about compression feature) #2365

Open
1 of 2 tasks
alija83 opened this issue Jun 14, 2024 · 2 comments
Open
1 of 2 tasks

Large .sst and .log files (unsure about compression feature) #2365

alija83 opened this issue Jun 14, 2024 · 2 comments
Labels
enhancement type enhancement

Comments

@alija83
Copy link

alija83 commented Jun 14, 2024

Search before asking

  • I had searched in the issues and found no similar issues.

Motivation

I was playing with kvrocks (version 2.8.0) today and my goal was to activate compression and reduce logging.
I am not sure if I have enabled configurations correctly but here is what I have noticed.

My goal was to use kvrocks and storing large volumes of KVs while ensuring that that data (KVs) remain compressed and uses least amount of disk.

Here is my configuration:

dir /kvrocks/data

# General
port 6376
bind 0.0.0.0

rocksdb.compression zstd

backup-dir /kvrocks/backup
#log-dir /kvrocks
log-level error
log-dir stdout
log-retention-days 0
pidfile /kvrocks/kvrocks.pid

I tried also the option lz4 on rocksdb.compression but nothing, the .sst file does not look compressed and the .log files are quite large as well.
cd db
/kvrocks/data/db # du -hs *
4.0K 000019.sst
624.0K 000605.sst
83.9M 002080.sst
70.4M 002082.log
102.6M 002083.sst
16.0G archive

cd archive
ls -alsrht

64544 -rw-r--r-- 1 root root 63.0M Jun 14 20:59 002162.log
64448 -rw-r--r-- 1 root root 62.9M Jun 14 20:59 002169.log
64696 -rw-r--r-- 1 root root 63.2M Jun 14 20:59 002165.log

127.0.0.1:6376> keys '*' pattern
16521) ....

it has 16521 records.

16GB is just too much.

Solution

I am not sure on how it should work and be implemented, but what I expected as user is to see .sst files compressed and be able to disable logs if desired.

instead of seeing:

/kvrocks/data # du -hs *
22.5G db

it should have been something like: 25MB

Are you willing to submit a PR?

  • I'm willing to submit a PR!
@alija83 alija83 added the enhancement type enhancement label Jun 14, 2024
@PragmaTwice
Copy link
Member

PragmaTwice commented Jun 15, 2024

There are basically two points in this issue:

  • for .log files, it's actually WAL (write ahead logging) in rocksdb, and you can configure it via some options like rocksdb.wal_ttl_seconds or rocksdb.wal_size_limit_mb.
  • even you specify rocksdb.compression, these existing SST files will not be compressed immediately. And seems compaction is more important for your issue.

cc @git-hulk

@git-hulk
Copy link
Member

for .log files, it's actually WAL (write ahead logging) in rocksdb, and you can configure it via some options like rocksdb.wal_ttl_seconds or rocksdb.wal_size_limit_mb.

Yes, you can reduce those two if you would like to keep fewer logs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement type enhancement
Projects
None yet
Development

No branches or pull requests

3 participants