# 1.3.13. `/{db}/_compact`

POST /{db}/_compact

  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 /_active_tasks.

  Parameters:

    - db – Database name

  Request Headers:

    - Accept –

      - application/json

      - text/plain

    - Content-Type – application/json

  Response Headers:

    - Content-Type –

      - application/json

      - text/plain; charset=utf-8

  Response JSON Object:

    - ok (boolean) – Operation status

  Status Codes:

    - 202 Accepted – Compaction request has been accepted

    - 400 Bad Request – Invalid database name

    - 401 Unauthorized – CouchDB Server Administrator privileges required

    - 403 Forbidden – Insufficient permissions / Too many requests with invalid credentials

    - 415 Unsupported Media Type – Bad Content-Type value

  Request:

      POST /db/_compact HTTP/1.1
      Accept: application/json
      Content-Type: application/json
      Host: localhost:5984

  Response:

      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
      }

# 1.3.14. `/{db}/_compact/{ddoc}`

POST /{db}/_compact/{ddoc}

  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. See Manual View Compaction for details.

  Parameters:

    - db – Database name

    - ddoc – Design document name

  Request Headers:

    - Accept –

      - application/json

      - text/plain

    - Content-Type – application/json

  Response Headers:

    - Content-Type –

      - application/json

      - text/plain; charset=utf-8

  Response JSON Object:

    - ok (boolean) – Operation status

  Status Codes:

    - 202 Accepted – Compaction request has been accepted

    - 400 Bad Request – Invalid database name

    - 401 Unauthorized – CouchDB Server Administrator privileges required

    - 403 Forbidden – Insufficient permissions / Too many requests with invalid credentials

    - 404 Not Found – Design document not found

    - 415 Unsupported Media Type – Bad Content-Type value

  Request:

      POST /db/_compact/ddoc HTTP/1.1
      Accept: application/json
      Content-Type: application/json
      Host: localhost:5984

  Response:

      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.

# 1.3.15. `/{db}/_ensure_full_commit`

POST /{db}/_ensure_full_commit

  Changed in version 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.

  Parameters:

    - db – Database name

  Request Headers:

    - Accept –

      - application/json

      - text/plain

    - Content-Type – application/json

  Response Headers:

    - Content-Type –

      - application/json

      - text/plain; charset=utf-8

  Response JSON Object:

    - instance_start_time (string) – Always `"0"`. (Returned for legacy reasons.)

    - ok (boolean) – Operation status

  Status Codes:

    - 201 Created – Commit completed successfully

    - 400 Bad Request – Invalid database name

    - 401 Unauthorized – Unauthorized request to a protected API

    - 403 Forbidden – Insufficient permissions / Too many requests with invalid credentials

    - 415 Unsupported Media Type – Bad Content-Type value

  Request:

      POST /db/_ensure_full_commit HTTP/1.1
      Accept: application/json
      Content-Type: application/json
      Host: localhost:5984

  Response:

      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
      }

# 1.3.16. `/{db}/_view_cleanup`

POST /{db}/_view_cleanup

  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.

  Parameters:

    - db – Database name

  Request Headers:

    - Accept –

      - application/json

      - text/plain

    - Content-Type – application/json

  Response Headers:

    - Content-Type –

      - application/json

      - text/plain; charset=utf-8

  Response JSON Object:

    - ok (boolean) – Operation status

  Status Codes:

    - 202 Accepted – Compaction request has been accepted

    - 400 Bad Request – Invalid database name

    - 401 Unauthorized – CouchDB Server Administrator privileges required

    - 403 Forbidden – Insufficient permissions / Too many requests with invalid credentials

    - 415 Unsupported Media Type – Bad Content-Type value

  Request:

      POST /db/_view_cleanup HTTP/1.1
      Accept: application/json
      Content-Type: application/json
      Host: localhost:5984

  Response:

      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
      }