# 7.3.18. `database_unmap`

## 7.3.18.1. 概要

バージョン 5.0.7 で追加.

`database_unmap` はデータベース中のすでにマップしてあるテーブルとカラムをアンマップします。「マップ」とはテーブルとカラムをディスクからロードしてメモリー上に展開することです。「アンマップ」とはマップしたメモリーを解放することです。

注釈

通常、 `database_unmap` を使う必要はありません。なぜなら、OSが賢くメモリーを管理してくれるからです。もし、システムの残メモリーが少なくなったら、OSはGroongaが使っているメモリーをディスクに退避します。退避したメモリーは必要になったらまたメモリーに戻します。OSは使っていないメモリーを優先して退避します。

注意

このコマンドは thread_limit が `1` を返すときしか使えません。つまり、マルチスレッド環境ではこのコマンドは動かないということです。

## 7.3.18.2. 構文

このコマンドに引数はありません:

    database_unmap

## 7.3.18.3. 使い方

最大スレッド数を `1` に変更したあとならデータベースをアンマップできます。

実行例:

    thread_limit --max 1
    # [[0, 1337566253.89858, 0.000355720520019531], 2]
    database_unmap
    # [[0, 1337566253.89858, 0.000355720520019531], true]

最大スレッド数が `1` より大きい場合は `database_unmap` は失敗します。

実行例:

    thread_limit --max 2
    # [[0, 1337566253.89858, 0.000355720520019531], 1]
    database_unmap
    # [
    #   [
    #     -2,
    #     1337566253.89858,
    #     0.000355720520019531,
    #     "[database_unmap] the max number of threads must be 1: <2>",
    #     [
    #       [
    #         "proc_database_unmap",
    #         "proc.c",
    #         3705
    #       ]
    #     ]
    #   ],
    #   false
    # ]

## 7.3.18.4. 引数

このセクションではすべての引数について説明します。

### 7.3.18.4.1. 必須引数

必須の引数はありません。

### 7.3.18.4.2. 省略可能引数

省略可能な引数はありません。

## 7.3.18.5. 戻り値

このコマンドが成功したときは以下のようにボディは `true` になります:

    [HEADER, true]

このコマンドが失敗すると、 `HEADER` にエラーの詳細が含まれます。

`HEADER` については 出力形式 を参照してください。