pg_largeobject
pg_largeobject
カタログは「ラージオブジェクト」を構築するデータを保持します。
ラージオブジェクトは作成された時に割り当てられたOIDで識別されます。
それぞれのラージオブジェクトはpg_largeobject
の行に都合良く格納されるのに十分に足る小さなセグメント、もしくは「ページ」に分割されます。
ページごとのデータ量は(現在BLCKSZ/4
あるいは典型的に2キロバイトの)LOBLKSIZE
として定義されます。
PostgreSQL 9.0より前までは、ラージオブジェクトに関連した権限構造はありませんでした。
その結果pg_largeobject
は可読性が高いもので、システム内のすべてのラージオブジェクトのOIDを入手するために使用することができました。
これはもはや当てはまりません。
ラージオブジェクトのOIDのリストを入手するためにはpg_largeobject_metadata
を使用してください。
表51.30 pg_largeobject
の列
名前 | 型 | 参照先 | 説明 |
---|---|---|---|
loid | oid |
| このページを含んだラージオブジェクトの識別子 |
pageno | int4 | ラージオブジェクト内の(ゼロから数えた)このページのページ番号 | |
data | bytea | ラージオブジェクト内に保存された実データ。
LOBLKSIZE バイトを絶対上回りません。
たぶんそれより小さいでしょう。
|
pg_largeobject
のそれぞれの行はオブジェクト内のバイトオフセット(pageno * LOBLKSIZE
)から始まるラージオブジェクトの1ページ分のデータを保持します。
ページが見つからなかったり、たとえオブジェクトの最後のページでない場合でもLOBLKSIZE
より小さくてもよいといった、あちこちに散らばって保存されてもよいような実装になっています。
ラージオブジェクトの中で見つからない部分はゼロとして読み込まれます。