mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-06 23:13:15 +00:00
060e5d33544fcc3daeb7b10d73dfcdda7dade981
"In time-series, it's common for tables in a given time window to be eventually fully expired. The deletion of such tables is done by compaction, but there's *no* need to *actually* compact such fully expired sstables *iff* their full deletion will not cause older data to be ressurected. In other words, a fully expired table can be actually skipped (but deleted in the end) by compaction *iff* it doesn't contain newer data than its overlapping counterparts. So there may be false negatives, but never false positives. All that said, the goal behind this patchset is to save read bandwidth of disk in such scenarios. Given that fully expired sstables will not be read by compaction process anymore, read amplification will be greatly reduced too. Fixes #2620." * 'time_series_performance_improvement_v2_2' of github.com:raphaelsc/scylla: tests: check sstable auto correct bad max deletion time tests: add test for compaction with fully expired table sstables/compaction: do not actually compact fully expired sstables sstables: make sstable auto correct max_local_deletion_time sstables: switch to const ref wherever possible sstables: use gc_clock::time_point for gc_before gc_clock: introduce operator<<(ostream&, gc_clock::time_point) sstables: introduce sstable::get_max_local_deletion_time sstables: remove unnecessary copy in time series strategies sstables: change return value type of get_fully_expired_sstables dtcs: make code to extract non expired tables faster sstables: add has_correct_max_deletion_time to sstable
…
…
…
…
Merge "Improve time-series performance by not actually compacting fully expired tables" from Raphael
…
…
…
…
…
…
Scylla
Quick-start
$ git submodule update --init --recursive
$ sudo ./install-dependencies.sh
$ ./configure.py --mode=release
$ ninja-build -j4 # Assuming 4 system threads.
$ ./build/release/scylla
$ # Rejoice!
Please see HACKING.md for detailed information on building and developing Scylla.
Running Scylla
- Run Scylla
./build/release/scylla
- run Scylla with one CPU and ./tmp as data directory
./build/release/scylla --datadir tmp --commitlog-directory tmp --smp 1
- For more run options:
./build/release/scylla --help
Building Fedora RPM
As a pre-requisite, you need to install Mock on your machine:
# Install mock:
sudo yum install mock
# Add user to the "mock" group:
usermod -a -G mock $USER && newgrp mock
Then, to build an RPM, run:
./dist/redhat/build_rpm.sh
The built RPM is stored in /var/lib/mock/<configuration>/result directory.
For example, on Fedora 21 mock reports the following:
INFO: Done(scylla-server-0.00-1.fc21.src.rpm) Config(default) 20 minutes 7 seconds
INFO: Results and/or logs in: /var/lib/mock/fedora-21-x86_64/result
Building Fedora-based Docker image
Build a Docker image with:
cd dist/docker
docker build -t <image-name> .
Run the image with:
docker run -p $(hostname -i):9042:9042 -i -t <image name>
Contributing to Scylla
Description
Languages
C++
72.1%
Python
26.7%
CMake
0.3%
GAP
0.3%
Shell
0.3%