Roger Pack <rogerdpa...@gmail.com> writes: > On 2/2/15, José Luis Tallón <jltal...@adv-solutions.net> wrote: >> So yes, using one sequence per TOAST table should help. >> Combined with the new SequenceAMs / sequence implementation being >> proposed (specifically: one file for all sequences in a certain >> tablespace) this should scale much better.
> But it wouldn't be perfect, right? I mean if you had multiple > deletion/insertions and pass 4B then the "one sequence per TOAST > table" would still wrap [albeit more slowly], and performance start > degrading the same way. And there would still be the hard 4B limit. > Perhaps the foreign key to the TOAST table could be changed from oid > (32 bits) to something else (64 bits) [as well the sequence] so that > it never wraps? What do you think? And would a more aggressive change > like this have a chance of being accepted into the code base? There has been some thought about this, but I have seen no, zero, reports of anyone actually running into problems *in practice* (as opposed to contrived cases like "can we create a billion tables"). So we probably aren't going to want to address it until it starts being a real problem. The reason it's not as significant as you might think is that small field values (less than a couple KB *after compression*) don't get pushed out to the TOAST table, so they don't consume OIDs. And large field values, like megabytes worth, aren't a problem either because you just aren't gonna have that many of them. (Simple arithmetic.) You could potentially get into trouble if you had a whole lot of entries that were just a little over the toasting threshold, because then you'd have a lot of OIDs consumed but still a manageable total amount of disk space. But that doesn't seem to be a very common usage pattern. Also, partitioning the table largely eliminates the problem because each partition will have its own TOAST table. I'm on record as saying that many people are far too quick to decide that they need partitioning; but once you get into the volume of data where 4B toast entries starts to look like a limitation, you will probably have other reasons to think that you need to partition. In short, this is something that's theoretically interesting but doesn't seem worth doing in practice --- yet anyway. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers