2010-04-01から1ヶ月間の記事一覧
1.2.134が出ました。今回もこまごまと機能追加が多いリリースになっています。以下気になった点をいくつか。 システムプロパティにh2.analyzeAutoが追加。この行数を超える更新が発生(テーブルごと?)すると、自動でanalyzeが実行される。ただし、現在はデフ…
まぁ、別にJavaでできていると言うことを考えれば、それほどどうと言う関数でもないかもしれませんが。FILE_READはその名の通り、ファイルを読み込む関数です。第一引数はファイル名で、ローカルファイル名とURLをサポートしています。第二引数はキャラクタ…
ユーザー定義関数の返りをテーブル代わりに使ってみます。テーブル代わりに使う場合には、メソッドはResultSetを返すものである事が必要です。それ以外、実装で特に難しいところはありませんが、ユーザ定義関数をテーブルとして扱うときには、少なくとも2回…
リリースされてました。不具合修正がほとんど。機能追加は、LOBストレージメカニズムの新規追加(でもまだ実験中)くらい。
H2では組み込みの関数の他に、ユーザ定義関数/ストアドプロシージャを作る事ができます。Triggerと同様にJavaで実装します。実装の仕方は大きく2通りあります。Triggerの時にやったようなJavaで実装してコンパイルして、H2のクラスパスにそのクラスを入れて…
トレースのレベルをかえるだけの設定ですが、思いのほか面白いです。 set TRACE_LEVEL_SYSTEM_OUT 3 こんな味も素っ気もない、エラーメッセージの裏で、 sql> select * from hoge; Error: org.h2.jdbc.JdbcSQLException: テーブル "HOGE" が見つかりません T…
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では、count(*)で条件なしの単一テーブルでのカウントの際には、テーブルにアクセスしないので速い、とのこと。 sql> explain select count(*) from noprimary; PLAN SELECT COUNT(*) FROM PUBLIC.NOPRIMARY /* PUBLIC.NOPRIMARY.tableScan */…
データベースのパフォーマンスチューニングで、SQLのチューニング(インデックスの設定含む)は一番効果が大きい。それでいて、SQLのチューニングはポータビリティが高い。メモリの設定、ディスクの設定、パラメータの設定はデータベースごとにまったく異なる(…