SQLiteチュートリアル(X)。インメモリデータベースとテンポラリデータベース
2022-01-21 12:19:52
I. インメモリデータベース
SQLiteでは、データベースは通常ディスクファイルに保存されます。しかし、場合によっては、データベースを常にメモリ上に存在させることができます。これを行う最も一般的な方法の一つは、sqlite3_open()を呼び出す際に、データベースのファイル名パラメータに ":memory:"を渡す方法です。
コピーコード
コードは以下の通りです。
rc = sqlite3_open(":memory:", &db);
上記の関数が呼ばれた後、ディスクファイルは生成されず、その代わりに純粋なメモリ内に新しいデータベースが正常に作成されます。永続性はないので、このデータベースは現在のデータベース接続が閉じられるとすぐに消えてしまいます。ここで重要なのは、上記の方法で複数のデータベース接続をインメモリに作成することはできますが、それらは異なるデータベースであり、互いに何の関係もないということです。実際には、インメモリデータベースを、他の通常のデータベースと同様に、Attachコマンドで現在の接続にアタッチすることもできます、例えば、以下のようになります。
コピーコード
コードは以下の通りです。
ATTACH DATABASE ':memory:' AS aux1;
II. 一時的なデータベース
sqlite3_open() 関数の呼び出しやATTACHコマンドの実行時に、 database file パラメータに空文字列を渡すと、一時データベースの基礎ファイルとして新しい一時ファイルが作成されます。
コピーコード
コードは以下の通りです。
rc = sqlite3_open("", &db);
または
コピーコード
コードは以下の通りです。
ATTACH DATABASE '' AS aux2;
インメモリデータベースと同様に、2つのデータベース接続によって作成される一時的なデータベースは互いに独立しており、接続が閉じられ、その基礎となるファイルが自動的に削除されると、自動的に消滅します。
ディスクファイルは一時データベースのデータ情報を保存するために作成されますが、一時データベースは実際には通常インメモリデータベースと同様にメモリ上に存在します。唯一の違いは、一時データベースが大きすぎる場合、インメモリデータベースが常にメモリ上にデータを保存するのに対し、SQLiteは他の処理に使用できるメモリをより多く確保するために一時データベースのデータの一部をディスクファイルに書き込むことです。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン