blob: 529718389341588056a7768c125ec796b9a1703b [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.
.. _api/db/compact:
================
``/db/_compact``
================
.. http:post:: /{db}/_compact
:synopsis: Starts a compaction for the database
Request compaction of the specified database. Compaction compresses the
disk database file by performing the following operations:
- Writes a new, optimised, version of the database file, removing any
unused sections from the new version during write. Because a new file is
temporarily created for this purpose, you may require up to twice the
current storage space of the specified database in order for the
compaction routine to complete.
- Removes the bodies of any non-leaf revisions of documents from the
database.
- Removes old revision history beyond the limit specified by the
``_revs_limit`` database parameter.
Compaction can only be requested on an individual database; you cannot
compact all the databases for a CouchDB instance. The compaction process
runs as a background process.
You can determine if the compaction process is operating on a database
by obtaining the database meta information, the ``compact_running``
value of the returned database structure will be set to true. See
:get:`/{db}`.
You can also obtain a list of running processes to determine whether
compaction is currently running. See :ref:`api/server/active_tasks`.
:param db: Database name
:<header Accept: - :mimetype:`application/json`
- :mimetype:`text/plain`
:<header Content-Type: :mimetype:`application/json`
:>header Content-Type: - :mimetype:`application/json`
- :mimetype:`text/plain; charset=utf-8`
:>json boolean ok: Operation status
:code 202: Compaction request has been accepted
:code 400: Invalid database name
:code 401: CouchDB Server Administrator privileges required
:code 415: Bad :header:`Content-Type` value
**Request**:
.. code-block:: http
POST /db/_compact HTTP/1.1
Accept: application/json
Content-Type: application/json
Host: localhost:5984
**Response**:
.. code-block:: http
HTTP/1.1 202 Accepted
Cache-Control: must-revalidate
Content-Length: 12
Content-Type: application/json
Date: Mon, 12 Aug 2013 09:27:43 GMT
Server: CouchDB (Erlang/OTP)
{
"ok": true
}
.. _api/db/compact/ddoc:
===========================
``/db/_compact/design-doc``
===========================
.. http:post:: /{db}/_compact/{ddoc}
:synopsis: Starts a compaction for all the views in the selected
design document
Compacts the view indexes associated with the specified design document.
It may be that compacting a large view can return more storage than
compacting the actual db. Thus, you can use this in place of the full
database compaction if you know a specific set of view indexes have been
affected by a recent database change.
:param db: Database name
:param ddoc: Design document name
:<header Accept: - :mimetype:`application/json`
- :mimetype:`text/plain`
:<header Content-Type: :mimetype:`application/json`
:>header Content-Type: - :mimetype:`application/json`
- :mimetype:`text/plain; charset=utf-8`
:>json boolean ok: Operation status
:code 202: Compaction request has been accepted
:code 400: Invalid database name
:code 401: CouchDB Server Administrator privileges required
:code 404: Design document not found
:code 415: Bad :header:`Content-Type` value
**Request**:
.. code-block:: http
POST /db/_compact/posts HTTP/1.1
Accept: application/json
Content-Type: application/json
Host: localhost:5984
**Response**:
.. code-block:: http
HTTP/1.1 202 Accepted
Cache-Control: must-revalidate
Content-Length: 12
Content-Type: application/json
Date: Mon, 12 Aug 2013 09:36:44 GMT
Server: CouchDB (Erlang/OTP)
{
"ok": true
}
.. note::
View indexes are stored in a separate ``.couch`` file based on a hash
of the design document's relevant functions, in a sub directory of
where the main ``.couch`` database files are located.
.. _api/db/ensure_full_commit:
===========================
``/db/_ensure_full_commit``
===========================
.. http:post:: /{db}/_ensure_full_commit
:synopsis: Deprecated endpoint to support CouchDB versions < 3.0
replicators.
.. versionchanged:: 3.0.0 Deprecated; endpoint is a no-op.
Before 3.0 this was used to commit recent changes to the database in case
the ``delayed_commits=true`` option was set. That option is always
``false`` now, so commits are never delayed. However, this endpoint is kept
for compatibility with older replicators.
:param db: Database name
:<header Accept: - :mimetype:`application/json`
- :mimetype:`text/plain`
:<header Content-Type: :mimetype:`application/json`
:>header Content-Type: - :mimetype:`application/json`
- :mimetype:`text/plain; charset=utf-8`
:>json string instance_start_time: Always ``"0"``. (Returned for legacy
reasons.)
:>json boolean ok: Operation status
:code 201: Commit completed successfully
:code 400: Invalid database name
:code 415: Bad :header:`Content-Type` value
**Request**:
.. code-block:: http
POST /db/_ensure_full_commit HTTP/1.1
Accept: application/json
Content-Type: application/json
Host: localhost:5984
**Response**:
.. code-block:: http
HTTP/1.1 201 Created
Cache-Control: must-revalidate
Content-Length: 53
Content-Type: application/json
Date: Mon, 12 Aug 2013 10:22:19 GMT
Server: CouchDB (Erlang/OTP)
{
"instance_start_time": "0",
"ok": true
}
.. _api/db/view_cleanup:
=====================
``/db/_view_cleanup``
=====================
.. http:post:: /{db}/_view_cleanup
:synopsis: Removes view files that are not used by any design document
Removes view index files that are no longer required by CouchDB as a result
of changed views within design documents. As the view filename is based on
a hash of the view functions, over time old views will remain, consuming
storage. This call cleans up the cached view output on disk for
a given view.
:param db: Database name
:<header Accept: - :mimetype:`application/json`
- :mimetype:`text/plain`
:<header Content-Type: :mimetype:`application/json`
:>header Content-Type: - :mimetype:`application/json`
- :mimetype:`text/plain; charset=utf-8`
:>json boolean ok: Operation status
:code 202: Compaction request has been accepted
:code 400: Invalid database name
:code 401: CouchDB Server Administrator privileges required
:code 415: Bad :header:`Content-Type` value
**Request**:
.. code-block:: http
POST /db/_view_cleanup HTTP/1.1
Accept: application/json
Content-Type: application/json
Host: localhost:5984
**Response**:
.. code-block:: http
HTTP/1.1 202 Accepted
Cache-Control: must-revalidate
Content-Length: 12
Content-Type: application/json
Date: Mon, 12 Aug 2013 09:27:43 GMT
Server: CouchDB (Erlang/OTP)
{
"ok": true
}