Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1Vu5s9-0004yX-LG for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Dec 2013 19:36:34 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1Vu5s9-0001dx-3c for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Dec 2013 19:36:33 +0000 Received: from makus.postgresql.org ([2001:4800:7903:4::125]) by malur.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1Vu5s4-0001Xg-A9 for pgsql-hackers@postgresql.org; Fri, 20 Dec 2013 19:36:28 +0000 Received: from smtp-outbound-2.vmware.com ([208.91.2.13]) by makus.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1Vu5s0-0003Zj-CR for pgsql-hackers@postgresql.org; Fri, 20 Dec 2013 19:36:27 +0000 Received: from sc9-mailhost1.vmware.com (sc9-mailhost1.vmware.com [10.113.161.71]) by smtp-outbound-2.vmware.com (Postfix) with ESMTP id ABF7029689; Fri, 20 Dec 2013 11:36:23 -0800 (PST) Received: from zcs-prod-ext-mta-2.vmware.com (zcs-prod-ext-mta-2.vmware.com [10.113.62.224]) by sc9-mailhost1.vmware.com (Postfix) with ESMTP id A477018056; Fri, 20 Dec 2013 11:36:23 -0800 (PST) Received: from zcs-prod-ext-mta-2.vmware.com (localhost.localdomain [127.0.0.1]) by zcs-prod-ext-mta-2.vmware.com (Postfix) with ESMTP id 29687C005A; Fri, 20 Dec 2013 11:36:51 -0800 (PST) Received: from [192.168.1.90] (zimbra-prod-ext-proxy-vip.vmware.com [10.113.63.87]) by zcs-prod-ext-mta-2.vmware.com (Postfix) with ESMTPSA id 3DFCCC0051; Fri, 20 Dec 2013 11:36:49 -0800 (PST) Message-ID: <52B49C34.8060300@vmware.com> Date: Fri, 20 Dec 2013 21:36:20 +0200 From: Heikki Linnakangas Organization: VMware User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131005 Icedove/17.0.9 MIME-Version: 1.0 To: Alexander Korotkov CC: Alvaro Herrera , Tomas Vondra , pgsql-hackers Subject: Re: GIN improvements part 1: additional information References: <527A03AF.9010501@vmware.com> <20131106153604.GM5809@eldon.alvh.no-ip.org> <528CEB34.7080702@vmware.com> <52950F46.2080009@vmware.com> <5298615C.7060102@vmware.com> <5298E834.4090408@vmware.com> <52A58AD5.6030808@vmware.com> <52A62771.3070800@vmware.com> <52AEE445.1060206@vmware.com> <52AF837C.3040201@vmware.com> <52B2F5B0.1030809@vmware.com> In-Reply-To: <52B2F5B0.1030809@vmware.com> Content-Type: multipart/mixed; boundary="------------070800030706090001010600" X-Pg-Spam-Score: -7.4 (-------) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------070800030706090001010600 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 12/19/2013 03:33 PM, Heikki Linnakangas wrote: > On 12/17/2013 12:49 AM, Heikki Linnakangas wrote: >> On 12/17/2013 12:22 AM, Alexander Korotkov wrote: >>> On Mon, Dec 16, 2013 at 3:30 PM, Heikki Linnakangas >>> >>> wrote: >>> >>>> On 12/12/2013 06:44 PM, Alexander Korotkov wrote: >>>> >>>> When values are packed into small groups, we have to either insert >>>>> inefficiently encoded value or re-encode whole right part of values. >>>> >>>> It would probably be simplest to store newly inserted items >>>> uncompressed, >>>> in a separate area in the page. For example, grow the list of >>>> uncompressed >>>> items downwards from pg_upper, and the compressed items upwards from >>>> pg_lower. When the page fills up, re-encode the whole page. >> >> I hacked together an implementation of a variant of Simple9, to see how >> it performs. Insertions are handled per the above scheme. > > Here's an updated version of that, using the page layout without > item-indexes that I described in the other post. This is much less buggy > than that earlier crude version I posted - and unfortunately it doesn't > compress as well. The earlier version lost some items :-(. > > Nevertheless, I think this page layout and code formatting is better, > even if we switch the encoding back to the varbyte encoding in the end. Yet another version. The encoding/decoding code is now quite isolated in ginpostinglist.c, so it's easy to experiment with different encodings. This patch uses varbyte encoding again. I got a bit carried away, experimented with a bunch of different encodings. I tried rice encoding, rice encoding with block and offset number delta stored separately, the simple9 variant, and varbyte encoding. The compressed size obviously depends a lot on the distribution of the items, but in the test set I used, the differences between different encodings were quite small. One fatal problem with many encodings is VACUUM. If a page is completely full and you remove one item, the result must still fit. In other words, removing an item must never enlarge the space needed. Otherwise we have to be able to split on vacuum, which adds a lot of code, and also makes it possible for VACUUM to fail if there is no disk space left. That's unpleasant if you're trying to run VACUUM to release disk space. (gin fast updates already has that problem BTW, but let's not make it worse) I believe that eliminates all encodings in the Simple family, as well as PForDelta, and surprisingly also Rice encoding. For example, if you have three items in consecutive offsets, the differences between them are encoded as 11 in rice encoding. If you remove the middle item, the encoding for the next item becomes 010, which takes more space than the original. AFAICS varbyte encoding is safe from that. (a formal proof would be nice though). So, I'm happy to go with varbyte encoding now, indeed I don't think we have much choice unless someone can come up with an alternative that's VACUUM-safe. I have to put this patch aside for a while now, I spent a lot more time on these encoding experiments than I intended. If you could take a look at this latest version, spend some time reviewing it and cleaning up any obsolete comments, and re-run the performance tests you did earlier, that would be great. One thing I'm slightly worried about is the overhead of merging the compressed and uncompressed posting lists in a scan. This patch will be in good shape for the final commitfest, or even before that. - Heikki --------------070800030706090001010600 Content-Type: application/x-gzip; name="gin-packed-postinglists-varbyte2.patch.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="gin-packed-postinglists-varbyte2.patch.gz" H4sICPVotFIAA2dpbi1wYWNrZWQtcG9zdGluZ2xpc3RzLXZhcmJ5dGUyLnBh dGNoAMRce3PbNrb/W/oUmHQmlS1KlvxOvcmsY7upZh3b13Zud7vT8UAkJHFN kVqCtOJ2ez/7PQ+ABPSwnSZzr6dJLBE4ODiP33kAbBSPRqLTGceFkFs6D7eG MrxXabQlw1BpvTWO063rs+PTj2di+PTzZpxG6rPoh/3wYLjf7YajveHO/lD0 e7393d1mp9N5boVmu91+dpW//lV0+jt7QX9PtM2/8JWWUyVCWahxlj+KbCTS MkmESgv4JHMlpiofq0jEaZGJLFWCeeXn/yo1bF6LiZzNVKqbYh4XE5HlUZxK eHyvHmlgrHS3KZpiUwxSIauvgX4hiokSwyJXSiRKjuCvB5UE9kGqPhfi5qfL 69vj88GHCzHMyjQCykGzA4+BuVgLCSTzXBLrv6kcmMzFNINng0JNrzLgW+U6 EPNJHE6ELvAJkp4oORNFOUtUs3M7ONViBPN4ED6mXcphAr8BGS3CLC1knMIz WBI20BXiFn+F/0KZJCAgmNXsvJpluojTsUhiXbyiQUoQ+Rh37j4VUxIeCE7m +FRneQFkQHgq7zY7gxHxQSPnWZlEYgiMZ5kYxmPiteKSdwHPxAhMMUtRIvxg JseKReUJg9Q6K/UElysLnCmFVjOZgxVUPOJklCX+C/KTadTspGgANctIuFZm XGiVjMyea3I4nVY0cpKOlFDvr46QDttalo9lGv+Go2COsQvQq8O9eJBJifbU ucgKVCWYCrCiYjQIWEOrQCxvWOssjCXKlyyUbTCUabOjpI6TRxRuriTLY0EZ R6x0+C9XSYzfpmL4SItoJNGuTZHVBQyj0YAkrfEBxTCbznJwSJgP2psC1y0N mzupvm62r4xUzoGIBgmGRZylGwHTIXFlC6a71mqb7XVmu2y1YsFom+1m+5tZ H7lF+1tYn0Dja7a/1vqq3YLe0PpYDUOVZPONI/HnbQo4s0Ylvt6mhEwAjoHs 1CLn7YLAwQiADghdJZFGk5MMoA64wq7lsNTsTaMsgS3qHzgK7O8E+xAE4J9+ H4PAyuU8tMJ9wYY4qlg/+hCnH1Rh7LYVA2cbML0NOD/CZ4PbcjbQtYnzCJal RxzkQMgc+Z7SbAvjLF1xibqYxxoBGcdz6HGw31VOV1youXURkkMyl48a6a1a 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 JU6FGte8bmK9r8bBFtGmEfZ1pc7iJLG1Dq5XJQuWshGcA59mprGkH+NcF+59 YYaUmrV156JT+ZnO4A0YfBePIjUSn27O7o5v6F7NyU9nJ38bXHwwopYaLehO pXhHP6rki+qKjTzQj1oxrNk/ErH4i1UjfGi3N+ru1zFRagFmGfP0ovhrmvPP GATY/xXwxnz8dQMI9uqOGvz5Dl/rHLmAYK3DRYQTexcUmwHsMvxmsPMeHhX0 9EK3+z4Wtwqq166IGmyR7JtJr/Yu37lWvu2nPCejKnOrKQywYBXUpHJnoD+C a1NrfanQcUCGKsredrC/I9rbu73ggE7WkcA5vs9F8n1RU2ejKf7AmtMgzQ1t nS4253hYhSga01U71DT9bwkwMFZAy5hDjBlJD5WdmzyKEF+1TXnQNSlMm9ek RobYiCWU1jgC9p1GvlRjsyJ3rXHgErVxTK/verO00R+ugCkq34LCO8J4vTPN ICe9UfQiJ11UwSExJPeX/MI+vr678PYAnsDT/4cgNlcb6dCPl6b2EpEzJCS+ vW7es3eorNJ8p1YcwuUXKK+N9jtILcg6mPiE8Qhs4ONnyHblihPs5Ss93tsJ 4Ejm9A1vdeNjTsL4lekj6jsbh6/AGhk0MH204rFz649uD67PsfgxSbLRADS4 KuiEmW8rMgewH9L0QpnbsFBhc0bzGY/MEO3sEWUJpV4oU0QvShFB6T/L5N68 RMk14ML7PnTUm3q3kn1IYTLe65x8cQ9Tyi/OHnnbMF60wonMxeaGZQzi1suz yQbYMr7EuA6VDU08tc3xzdXXtm/PrR5GZ7pDBcZQXxIBvpYiFDXKDWLfXn86 O1qXSeNli1oeF/BpeZRNcOs2cSUGd/q7t4IF5cShrU0+Sp+b19fJx+0Ezu+N ba4h+rYiys39Ya7kfX3mU7PeWrU7jxZ253GS8YUlVf7FWQptFOPXGtHS2xUv ifuwf7Rt15Z52//b3Jc2t3Fj7X6mf0XHU5FJkZRF7YpsT8my7Khiy76Wssyb yVW1yJbUE4rky8Wy79jz2y/OBhyg0WRTdqomNZNQ3QAa68FZnyOsQ0yqCKYd BALi1aDFOvDEjYIakNV9ovYLto55QEe14Y4fjuEJEJeGebLknuLz3sYJ5WdC jppf8BvQfrN5YJmEKjcd3Oa5d9s1g9su7UMkxKf4rddc4tZzQgbeCM373wiw 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 RVktiW35Dj9WKa0lOaXK2Q5UbKWRUnZDRcNn5ocpJWHYpjBoZcb8SK7KpFY4 y9xX6/6tBxg6G+MCbWyAfWN7cxfVw1+9PjDyMklC/GJJjFCeYvnkBWLC2I0P vQUHWnps3b/8IEvnOmX2bAg4GHnlR1Xi4LcMTYTRb5vtuf9tticrNSkunjk1 QCayQWitvyyxCnJZkQoTL5DNFYd+nrNT9ThLeuYOHOeXM9DEC3oUVb/8lGT/ OzMdRiYA+Lspwk9PSXs64LfEuX7HXJyXW6Wa0rpSchU/ZO5basOTOdrw9j20 4Y2/Vof+FffJwrC7xC+Q83VKfjv8h/bvjPjI8RHb6YDZZHtvncyn33AjJEFu nKTmePcaC1yeX9nXZMOhmnNzxzSXbl7iIFXlkmi4+ZWT6llrvsmtvrONFsWd 3b9iUQNHBbOOKEqKVuUv9jrd7ezD0HY390NzOh6wqD09KkzGrOc4T858ji2W 28+xdCUDenhrlVjQ/WUqNaEf03cr2NA193EPI/pVOpkusJ9TETadb11tdDud vbW17fX97Usj+lc0nXMji6zmXAytjZvAFJl/7wam3vkGWyO84Y951txmwTx8 Y7b4RS+bplITjci9zGwHdBa+eHf46vji5fvjY5Cek3+SWLcHDFtzC90/aJ/+ mKUjJH4vzUCOhubAdqdlmrcipRRlJkmzTnXndCZiCYJVzzPK+MyaN/7TaqTh ULZAHwtYEoLHp5+7V0qHCna2p8nqzfSia37iqy4NYzg275FT+V09GdCjZhOi KIXg6yqT2a1YJ2Lq4IOqG/U6W7RPsQRv041sM9vbuVpbS7u76e56p+o2pTYW 7VIqRaSqtbFlSFWHeVeg0UdgNpxMzRK9HEQVX/DM0LCfDJn/M/vUIB4Q1o/y cQEJgmTFH/LhbAIG69R0QVv0KMGAaCbJwzki/wvROxHVC14MSrGgmyRAFY+K rlKiDtBFnw/PptkIY07mNcCKuorJ4Tw/ZJeHbpxNSG2rYpMKlTCuN1khL+rj 18fnxy8abFXAiwUAVAnjEsC8wXWgOxsDeEnyIe3OZrec4COU/nz4lUTpsCFU 0QKF4goRv42WYXBov0aftLFpvz/LrDIboUFXaQIKYWUHOMWg0OM5oKINyCLf nJfxvTQUSLmI+2mQxtnE+SWHzdHal8d40WJj11izSFjKps0nFm88SLrnQHYt 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 d5iemX0yIKETastH1mUn6UPCn/8PnRLi2QazAQA= --------------070800030706090001010600 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------070800030706090001010600--