pg_largeobject カタログは "ラージオブジェクト"を構築するデータを保持しています。ラージオブジェクトは作成されたときに割り当てられた OID で識別されます。それぞれのラージオブジェクトは pg_largeobject の行に都合よく格納されるのに充分に足る小さなセグメント、もしくは"ページ"に分割されます。ページ毎のデータ量は(現在BLCKSZ/4 あるいは典型的に 2K バイトの) LOBLKSIZE として定義されます。
表 41-19. pg_largeobject の列
名前 | 型 | 参照先 | 説明 |
---|---|---|---|
loid | oid | このページを含んだラージオブジェクトの識別子 | |
pageno | int4 | ラージオブジェクト内の(ゼロから数えた)このページのページ番号 | |
data | bytea | ラージオブジェクト内の保存された実データ。LOBLKSIZE バイトを絶対上回りません。たぶんそれより小さいでしょう。 |
pg_largeobject のそれぞれの行はオブジェクト内のバイトオフセット(pageno * LOBLKSIZE)から始まるラージオブジェクトの 1 ページ分のデータを保持します。ページが見つからなかったり、たとえオブジェクトの最期のページでない場合に LOBLKSIZE より小さくてもよいといった、あちこちに散らばって保存されてもよいような実装になっています。ラージオブジェクトの中で見つからない部分はゼロとして読み込まれます。