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