On Wed, Feb 6, 2019 at 4:32 PM Pavan Deolasee <pavan.deola...@gmail.com> wrote: > > Hello, > > Currently either the table level option `toast_tuple_target` or the compile > time default `TOAST_TUPLE_TARGET` is used to decide whether a new tuple > should be compressed or not. While this works reasonably well for most > situations, at times the user may not want to pay the overhead of toasting, > yet take benefits of inline compression. > > I would like to propose a new table level option, compress_tuple_target, > which can be set independently of toast_tuple_target, and is checked while > deciding whether to compress the new tuple or not. > > For example, > > CREATE TABLE compresstest250 (a int, b text) WITH (compress_tuple_target = > 250); > CREATE TABLE compresstest2040 (a int, b text) WITH (compress_tuple_target = > 2040); > > -- shouldn't get compressed nor toasted > INSERT INTO compresstest250 VALUES (1, repeat('1234567890',20)); > > -- should get compressed, but not toasted > INSERT INTO compresstest250 VALUES (2, repeat('1234567890',30)); > > -- shouldn't get compressed nor toasted > INSERT INTO compresstest2040 VALUES (1, repeat('1234567890',20)); > INSERT INTO compresstest2040 VALUES (2, repeat('1234567890',30)); > > Without this patch, the second INSERT will not compress the tuple since its > length is less than the toast threshold. With the patch and after setting > table level option, one can compress such tuples. > > The attached patch implements this idea. >
I like this idea. The patch seems to need update the part describing on-disk toast storage in storage.sgml. Regards, -- Masahiko Sawada NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center