やっぱり H2 Database Engine のクセがよく分からない

15万件ほどのデータで H2 のテストを続けている。
CSV を DB に取り込むのには異様に時間がかかったが、それ以降は満足すぎるくらいのパフォーマンスを見せてくれていた。
H2 をサーバーモードで使う方法も分かったし、かなり快調だった。
が、今回、ちょっとインデックスを追加しようとしてまたつまづいた。

普通に CREATE INDEX hoge_index ON hoge(column) というようなクエリを実行した。
そうしたら、1時間以上も返事がなくなってしまった。
パフォーマンスモニタで PC の調子を見てみると、JVM は一定のメモリを食ったままの状態。
じわじわとメモリ消費量が増えていくようなことはない。このあたり、SQLite とはクセが違う。
またなぜか、CPU もほとんど消費していない。java.exe が使用している CPU は 5~10% で推移している。
全然働いていないも同然?

気になったのは、ディスクアクセスがずっと続いていること。
SQLite で物理メモリを使い果たして、ページングが始まった時の状況に似ている。

JVM が物理メモリを使い果たしてしまっているということなのだろうか?
だとすると、SQL の命令次第では、SQLite と同様の突然のパフォーマンス劣化があり得るということだろうか?
(いや、実際に劣化しているのだが)

ただ、さすがに JVM を使っているだけあって、SQLite のように、他のアプリケーションまでもが影響を受けてページングを始めてしまうようなことが無いのが救いだ。
他のアプリケーションは、気味が悪いくらいに普通に動いてしまっている。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック