1. ホーム
  2. データベース
  3. エスキューエルライト

SQLiteインメモリデータベース学習マニュアル

2022-01-10 05:08:52

I. インメモリデータベース

    SQLiteでは、データベースは通常ディスクファイルに保存されます。しかし、場合によっては、データベースを常にメモリ上に存在させることができます。これを行う最も一般的な方法の一つは、sqlite3_open()を呼び出す際に、データベースのファイル名パラメータに ":memory:"を渡すことです。

コピーコード コードは以下の通りです。

    rc = sqlite3_open(":memory:", &db);

    上記の関数が呼ばれた後、ディスクファイルは生成されず、代わりに純粋なメモリ内に新しいデータベースが正常に作成されます。永続性はないので、このデータベースは、現在のデータベース接続が閉じられると同時に消滅します。上記の方法で複数のデータベース接続をインメモリに作成することができますが、それらは異なるデータベースであり、お互いに何の関係もないことに注意が必要です。実は、インメモリデータベースを、他の通常のデータベースと同様に、Attachコマンドで現在の接続にアタッチすることもできます、例えば

    ATTACH DATABASE ':memory:' AS aux1;
II. 一時的なデータベース

    sqlite3_open()関数を呼び出すか、ATTACHコマンドを実行するとき、データベース・ファイル・パラメータに空文字列を渡すと、新しい一時ファイルが一時データベースの基礎ファイルとして作成されます、例.
    rc = sqlite3_open("", &db);
    または
    ATTACH DATABASE '' AS aux2;
    インメモリデータベースと同様に、2つのデータベース接続によって作成される一時データベースは、互いに独立しています。接続が閉じられると、一時データベースは自動的に消え、その基礎となるファイルも自動的に削除されます。
    ディスクファイルは一時データベースのデータ情報を保存するために作成されますが、一時データベースは実際には通常インメモリデータベースと同じようにメモリ上に存在します。唯一の違いは、一時データベースが大きすぎる場合、SQLiteは他の操作に使用できるメモリを増やすために一時データベースからデータの一部をディスクファイルに書き込みますが、インメモリデータベースは常にデータをメモリ上に保存します。