Firebird 2.0

重い腰を上げて、Firebird2を少し触ってみた。


今回のバージョンアップで注目していたのがインデックス最大サイズの拡張。
今までは最大252byteで、UNICODE_FSSみたいに1文字3byteだと最大84文字。これは少ない。
なんとなく軽く255文字くらいは欲しい感じがする。
これが2.0ではページサイズによってインデックスの最大長が決定する仕様に。やった。


でも、ここで勘違いがひとつ。
てっきりインデックスの最大サイズ=ページサイズだと思っていましたが違いました。
どうやら、最大インデックスサイズは以下の数式で求められる値の模様。
最大インデックスサイズ = ページサイズ / 4 - 4


そして以外だったことがもう一つ。
UTF8が1文字4byteだった。
これは、Unicode4.0がサポートされたからなのだろうか。
でも、UNICODE_FSSは3byteのまま。
リリースノートを見ると

The UNICODE_FSS character set has a number of problems: it's an old version of UTF8 that accepts
malformed strings and does not enforce correct maximum string length. In FB 1.5.X UTF8 is an alias
to UNICODE_FSS.
Now,UTF8 is a new characterset, without the inherent problems of UNICODE_FSS.

とある。
これは、UNICODE_FSSは使うなということかな。
教えて偉い人。


となると、標準のページサイズは4096だから、文字コードにUTF8を使った場合、インデックスをはれる最大文字数は1020/4で255文字。
うーん思ったよりは少ないけれど、まぁいいか。
必要ならページサイズの変更も考えるべしと。


以下 備忘録

Page Size Max Key Size SJIS or EUC UTF8
1024 252 126 63
2048 508 254 127
4096 1020 510 255
8192 2044 1022 511
16384 4092 2046 1023