2012-03-07 18 views
14

高速なロードのために、完全な埋め込みh2インメモリデータベースをバイナリモードで一部のファイルまたはディレクトリに保存/ロードするにはどうすればよいですか。ディスクへのメモリ内H2データベースの保存

データをキャッシュするためにこれを使用したいので、毎回create table/insert句のすべての行を実行する必要はありません。

+1

ファイルDBとメモリ内バージョンを使用できますか?あなたが言及していないフレームワーク(Grailsなど)を使用してカスタム開発を行っていると仮定します。 – Marc

+0

これは、フレームワークが関与していないカスタムプロジェクトです。正直言って、私はファイルdbのパフォーマンスの意味がわからないので、スピードが必要で、データは常にメモリに収まるので、メモリ内のdbが最速になると仮定しました。データはクエリだけなので、不要な保存チェックは不要です。 – mikkom

+0

@marc 'ファイルDB'を使うことは別のことです。 Javaまたは他の言語でインメモリ・テスト・データ・セットをセットアップし、データ・セットをバックアップし、各テスト後に初期状態にリストアするために使用すると、ユニット・テストで非常に便利です。 –

答えて

8

メモリ内のデータベースを使用する代わりに、通常の(永続的な)データベースを使用できます。それでもインメモリテーブルを使用することはできます(メモリテーブルを作成する)。

メモリ内の完全なデータベースをディスクに永続化する最も簡単な方法は、SCRIPT TO 'fileName' SQL文を使用することです。これにより、SQLスクリプトが作成されます。データはテキスト形式で保存されますが、これは最も効率的なソリューションとは言えません。しかし、通常、ボトルネックはディスクであり、テキストの書式設定/解析は行われません。

別のオプションは、別のデータベースを作成する(create linked table又はlink_schema機能を使用して)インメモリデータベースとテーブルをリンクし、次にテーブルを保持するcreate table as selectを使用することです。

+0

句を挿入することは私が現在行っていることです.1ギガバイトのテキストには時間がかかり、ioではありません。申し訳ありませんが、バイナリオプションが必要です。 – mikkom

+0

私の答えを更新しました。 SCRIPTの場合:IOでない場合、それは何ですか?組み込みプロファイラなどのプロファイリングツールを使用しましたか? –

関連する問題