高速なロードのために、完全な埋め込みh2インメモリデータベースをバイナリモードで一部のファイルまたはディレクトリに保存/ロードするにはどうすればよいですか。ディスクへのメモリ内H2データベースの保存
データをキャッシュするためにこれを使用したいので、毎回create table/insert句のすべての行を実行する必要はありません。
高速なロードのために、完全な埋め込みh2インメモリデータベースをバイナリモードで一部のファイルまたはディレクトリに保存/ロードするにはどうすればよいですか。ディスクへのメモリ内H2データベースの保存
データをキャッシュするためにこれを使用したいので、毎回create table/insert句のすべての行を実行する必要はありません。
メモリ内のデータベースを使用する代わりに、通常の(永続的な)データベースを使用できます。それでもインメモリテーブルを使用することはできます(メモリテーブルを作成する)。
メモリ内の完全なデータベースをディスクに永続化する最も簡単な方法は、SCRIPT TO 'fileName' SQL文を使用することです。これにより、SQLスクリプトが作成されます。データはテキスト形式で保存されますが、これは最も効率的なソリューションとは言えません。しかし、通常、ボトルネックはディスクであり、テキストの書式設定/解析は行われません。
別のオプションは、別のデータベースを作成する(create linked table又はlink_schema機能を使用して)インメモリデータベースとテーブルをリンクし、次にテーブルを保持するcreate table as selectを使用することです。
句を挿入することは私が現在行っていることです.1ギガバイトのテキストには時間がかかり、ioではありません。申し訳ありませんが、バイナリオプションが必要です。 – mikkom
私の答えを更新しました。 SCRIPTの場合:IOでない場合、それは何ですか?組み込みプロファイラなどのプロファイリングツールを使用しましたか? –
ファイルDBとメモリ内バージョンを使用できますか?あなたが言及していないフレームワーク(Grailsなど)を使用してカスタム開発を行っていると仮定します。 – Marc
これは、フレームワークが関与していないカスタムプロジェクトです。正直言って、私はファイルdbのパフォーマンスの意味がわからないので、スピードが必要で、データは常にメモリに収まるので、メモリ内のdbが最速になると仮定しました。データはクエリだけなので、不要な保存チェックは不要です。 – mikkom
@marc 'ファイルDB'を使うことは別のことです。 Javaまたは他の言語でインメモリ・テスト・データ・セットをセットアップし、データ・セットをバックアップし、各テスト後に初期状態にリストアするために使用すると、ユニット・テストで非常に便利です。 –