Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UZd61-0008OW-QJ for pgsql-performance@arkaria.postgresql.org; Tue, 07 May 2013 08:18:01 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.72) (envelope-from ) id 1UZd61-0000Vv-Ag for pgsql-performance@arkaria.postgresql.org; Tue, 07 May 2013 08:18:01 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UZd60-0000Vq-Jk for pgsql-performance@postgresql.org; Tue, 07 May 2013 08:18:00 +0000 Received: from [2404:130:0:10::40:2] (helo=mail.catalyst.net.nz) by magus.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UZd5w-0006BI-1X for pgsql-performance@postgresql.org; Tue, 07 May 2013 08:18:00 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.catalyst.net.nz (Postfix) with ESMTP id 3FFD832FC4; Tue, 7 May 2013 20:17:53 +1200 (NZST) X-Virus-Scanned: Debian amavisd-new at catalyst.net.nz Received: from mail.catalyst.net.nz ([127.0.0.1]) by localhost (bertrand.catalyst.net.nz [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bz0t4SIZa2LE; Tue, 7 May 2013 20:17:52 +1200 (NZST) Received: from [192.168.1.64] (122-60-64-230.jetstream.xtra.co.nz [122.60.64.230]) (Authenticated sender: mark.kirkwood) by mail.catalyst.net.nz (Postfix) with ESMTPSA id DE1D731E89; Tue, 7 May 2013 20:17:51 +1200 (NZST) Message-ID: <5188B8AF.6010003@catalyst.net.nz> Date: Tue, 07 May 2013 20:17:51 +1200 From: Mark Kirkwood User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130404 Thunderbird/17.0.5 MIME-Version: 1.0 To: Simon Riggs CC: Tom Lane , Gavin Flower , "pgsql-performance@postgresql.org" Subject: Re: In progress INSERT wrecks plans on table References: <5179E77B.7050601@catalyst.net.nz> <5179ECC5.2010206@archidevsys.co.nz> <5179F259.3010509@catalyst.net.nz> <5179F5C6.8070702@archidevsys.co.nz> <5180E3C8.3010201@catalyst.net.nz> <2121.1367417215@sss.pgh.pa.us> <5181B80D.70404@catalyst.net.nz> <916bff05a5ab130c76d7835abbaf7762.squirrel@mail.catalyst.net.nz> <51870CB6.6090404@catalyst.net.nz> <51889FF4.7000306@catalyst.net.nz> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Host-Lookup-Failed: Reverse DNS lookup failed for 2404:130:0:10::40:2 (failed) X-Pg-Spam-Score: -1.1 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-performance Precedence: bulk Sender: pgsql-performance-owner@postgresql.org On 07/05/13 19:33, Simon Riggs wrote: > On 7 May 2013 07:32, Mark Kirkwood wrote: >> On 07/05/13 18:10, Simon Riggs wrote: >>> >>> On 7 May 2013 01:23, wrote: >>> >>>> I'm thinking that a variant of (2) might be simpler to inplement: >>>> >>>> (I think Matt C essentially beat me to this suggestion - he originally >>>> discovered this issue). It is probably good enough for only *new* plans >>>> to >>>> react to the increased/increasing number of in progress rows. So this >>>> would require backends doing significant numbers of row changes to either >>>> directly update pg_statistic or report their in progress numbers to the >>>> stats collector. The key change here is the partial execution numbers >>>> would need to be sent. Clearly one would need to avoid doing this too >>>> often (!) - possibly only when number of changed rows > >>>> autovacuum_analyze_scale_factor proportion of the relation concerned or >>>> similar. >>> >>> >>> Are you loading using COPY? Why not break down the load into chunks? >>> >> >> INSERT - but we could maybe workaround by chunking the INSERT. However that >> *really* breaks the idea that in SQL you just say what you want, not how the >> database engine should do it! And more practically means that the most >> obvious and clear way to add your new data has nasty side effects, and you >> have to tip toe around muttering secret incantations to make things work >> well :-) > > Yes, we'd need to break up SQL statements into pieces and use external > transaction snapshots to do that. > >> I'm still thinking that making postgres smarter about having current stats >> for getting the actual optimal plan is the best solution. > > I agree. > > The challenge now is to come up with something that actually works; > most of the ideas have been very vague and ignore the many downsides. > The hard bit is the analysis and balanced thinking, not the > developing. > Yeah - seeing likely downsides can be a bit tricky too. I'll have a play with some prototyping ideas, since this is actually an area of postgres (analyze/stats collector) that I've fiddled with before :-) Cheers Mark -- Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance