H2Databaseを追っかけていたりしたブログ

H2 database のリリースノートを読んだりとか。

2010-04-01から1ヶ月間の記事一覧

Version 1.2.134 (2010-04-23)

1.2.134が出ました。今回もこまごまと機能追加が多いリリースになっています。以下気になった点をいくつか。 システムプロパティにh2.analyzeAutoが追加。この行数を超える更新が発生(テーブルごと?)すると、自動でanalyzeが実行される。ただし、現在はデフ…

H2の素敵な関数。FILE_READ

まぁ、別にJavaでできていると言うことを考えれば、それほどどうと言う関数でもないかもしれませんが。FILE_READはその名の通り、ファイルを読み込む関数です。第一引数はファイル名で、ローカルファイル名とURLをサポートしています。第二引数はキャラクタ…

H2でユーザ定義関数/ストアドプロシージャを試してみる2

ユーザー定義関数の返りをテーブル代わりに使ってみます。テーブル代わりに使う場合には、メソッドはResultSetを返すものである事が必要です。それ以外、実装で特に難しいところはありませんが、ユーザ定義関数をテーブルとして扱うときには、少なくとも2回…

H2 Version 1.2.133 (2010-04-10)

リリースされてました。不具合修正がほとんど。機能追加は、LOBストレージメカニズムの新規追加(でもまだ実験中)くらい。

H2でユーザ定義関数/ストアドプロシージャを試してみる

H2では組み込みの関数の他に、ユーザ定義関数/ストアドプロシージャを作る事ができます。Triggerと同様にJavaで実装します。実装の仕方は大きく2通りあります。Triggerの時にやったようなJavaで実装してコンパイルして、H2のクラスパスにそのクラスを入れて…

TRACE_LEVEL_SYSTEM_OUTが面白い

トレースのレベルをかえるだけの設定ですが、思いのほか面白いです。 set TRACE_LEVEL_SYSTEM_OUT 3 こんな味も素っ気もない、エラーメッセージの裏で、 sql> select * from hoge; Error: org.h2.jdbc.JdbcSQLException: テーブル "HOGE" が見つかりません T…

H2でTriggerを試してみる。

H2にもやはりトリガーはあるのですが、PL/SQLやPL/pgSQLのような組み込みの言語がないので、所謂一般的にイメージするトリガーではなく、org.h2.api.Triggerインターフェースを実装したJavaのクラスが呼ばれる、という実装になっています。面倒だ、というの…

関数索引はないけれど

Computed Columns があるから、それに索引つければいいよ!とのこと。 create table birthday(user_id int primary key, birthday date, mon int as month(birthday)); insert into birthday(user_id,birthday) values (1, formatdatetime('2006-10-16','yyy…

H2のEXPLAINを試してみる2

前回の続き。h2では、count(*)で条件なしの単一テーブルでのカウントの際には、テーブルにアクセスしないので速い、とのこと。 sql> explain select count(*) from noprimary; PLAN SELECT COUNT(*) FROM PUBLIC.NOPRIMARY /* PUBLIC.NOPRIMARY.tableScan */…

H2のEXPLAINを試してみる。

データベースのパフォーマンスチューニングで、SQLのチューニング(インデックスの設定含む)は一番効果が大きい。それでいて、SQLのチューニングはポータビリティが高い。メモリの設定、ディスクの設定、パラメータの設定はデータベースごとにまったく異なる(…