blob: 859f04474401b8418103b50141e04169a504b52c [file] [log] [blame]
.. Licensed under the Apache License, Version 2.0 (the "License"); you may not
.. use this file except in compliance with the License. You may obtain a copy of
.. the License at
..
.. http://www.apache.org/licenses/LICENSE-2.0
..
.. Unless required by applicable law or agreed to in writing, software
.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
.. License for the specific language governing permissions and limitations under
.. the License.
.. default-domain:: config
.. highlight:: ini
========================
Compaction Configuration
========================
.. _config/database_compaction:
Database Compaction Options
===========================
.. config:section:: database_compaction :: Database Compaction Options
.. config:option:: doc_buffer_size :: Documents buffer size
Specifies the copy buffer's maximum size in bytes::
[database_compaction]
doc_buffer_size = 524288
.. config:option:: checkpoint_after :: Checkpoint trigger
Triggers a checkpoint after the specified amount of bytes were
successfully copied to the compacted database::
[database_compaction]
checkpoint_after = 5242880
.. _config/compactions:
Compaction Daemon Rules
=======================
.. config:section:: compactions :: Compaction Daemon Rules
A list of rules to determine when to run automatic compaction. The
:option:`daemons/compaction_daemon` compacts databases and their respective
view groups when all the condition parameters are satisfied. Configuration
can be per-database or global, and it has the following format::
[compactions]
database_name = [ {ParamName, ParamValue}, {ParamName, ParamValue}, ... ]
_default = [ {ParamName, ParamValue}, {ParamName, ParamValue}, ... ]
For example::
[compactions]
_default = [{db_fragmentation, "70%"}, {view_fragmentation, "60%"}, {from, "23:00"}, {to, "04:00"}]
- ``db_fragmentation``: If the ratio of legacy data, including metadata, to
current data in the database file size is equal to or greater than this
value, this condition is satisfied. The percentage is expressed as an
integer percentage. This value is computed as:
.. code-block:: none
(file_size - data_size) / file_size * 100
The data_size and file_size values can be obtained when
querying :http:get:`/{db}`.
- ``view_fragmentation``: If the ratio of legacy data, including metadata,
to current data in a view index file size is equal to or greater then
this value, this database compaction condition is satisfied. The
percentage is expressed as an integer percentage. This value is computed
as:
.. code-block:: none
(file_size - data_size) / file_size * 100
The data_size and file_size values can be obtained when querying a
:ref:`view group's information URI <api/ddoc/info>`.
- ``from`` and ``to``: The period for which a database (and its view group)
compaction is allowed. The value for these parameters must obey the
format:
.. code-block:: none
HH:MM - HH:MM (HH in [0..23], MM in [0..59])
- ``strict_window``: If a compaction is still running after the end of the
allowed period, it will be canceled if this parameter is set to `true`.
It defaults to `false` and is meaningful only if the *period* parameter
is also specified.
- ``parallel_view_compaction``: If set to `true`, the database and its
views are compacted in parallel. This is only useful on certain setups,
like for example when the database and view index directories point to
different disks. It defaults to `false`.
Before a compaction is triggered, an estimation of how much free disk space
is needed is computed. This estimation corresponds to two times the data
size of the database or view index. When there's not enough free disk space
to compact a particular database or view index, a warning message is
logged.
Examples:
#.
::
[{db_fragmentation, "70%"}, {view_fragmentation, "60%"}]
The `foo` database is compacted if its fragmentation is 70% or more. Any
view index of this database is compacted only if its fragmentation is
60% or more.
#.
::
[{db_fragmentation, "70%"}, {view_fragmentation, "60%"}, {from, "00:00"}, {to, "04:00"}]
Similar to the preceding example but a compaction (database or view
index) is only triggered if the current time is between midnight and 4
AM.
#.
::
[{db_fragmentation, "70%"}, {view_fragmentation, "60%"}, {from, "00:00"}, {to, "04:00"}, {strict_window, true}]
Similar to the preceding example - a compaction (database or view index)
is only triggered if the current time is between midnight and 4 AM. If
at 4 AM the database or one of its views is still compacting, the
compaction process will be canceled.
#.
::
[{db_fragmentation, "70%"}, {view_fragmentation, "60%"}, {from, "00:00"}, {to, "04:00"}, {strict_window, true}, {parallel_view_compaction, true}]
Similar to the preceding example, but a database and its views can be
compacted in parallel.
.. _config/compaction_daemon:
Configuration of Compaction Daemon
==================================
.. config:section:: compaction_daemon :: Configuration of Compaction Daemon
.. config:option:: check_interval
The delay, in seconds, between each check for which database and view
indexes need to be compacted::
[compaction_daemon]
check_interval = 300
.. config:option:: min_file_size
If a database or view index file is smaller than this value (in bytes),
compaction will not happen. Very small files always have high
fragmentation, so compacting them is inefficient. ::
[compaction_daemon]
min_file_size = 131072
.. _config/view_compaction:
Views Compaction Options
========================
.. config:section:: view_compaction :: Views Compaction Options
.. config:option:: keyvalue_buffer_size :: Key-Values buffer size
Specifies maximum copy buffer size in bytes used during compaction::
[view_compaction]
keyvalue_buffer_size = 2097152