Search Postgresql Archives

Re: simple update query too long

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2011/5/13 F T <oukile@xxxxxxxxx>:
> Thanks for your ideas.
>
> I have rerun my tests and I agree with Merlin, PostgreSQL is not adapted at
> all to handle wide updates.
>
> Summary :
> The table contains 2 millions rows.
>
> Test 1 :
> UPDATE grille SET inter=0; -> It tooks 10 hours
>
> Test 2 :
> I remove the spatial Gist index, and the constraints : I just keep the
> primary key.
> UPDATE grille SET inter=0; -> it tooks 6 hours.
>
> This is better but it is still not acceptable.
>
> And if I run CREATE TABLE test AS SELECT * FROM grille, it only takes 11
> seconds, incredible...

This is problem of GiST index. CREATE TABLE AS SELECT doesn't create
any indexes.

Regards

Pavel Stehule



>
> Fabrice
>
>
>
>
>
> 2011/5/9 Merlin Moncure <mmoncure@xxxxxxxxx>
>>
>> On Mon, May 9, 2011 at 10:29 AM, Â<tv@xxxxxxxx> wrote:
>> >> On 05/09/2011 04:39 PM, F T wrote:
>> >>> Hi list
>> >>>
>> >>> I use PostgreSQL 8.4.4. (with Postgis 1.4)
>> >>>
>> >>> I have a simple update query that takes hours to run.
>> >>> The table is rather big (2 millions records) but it takes more than 5
>> >>> hours
>> >>> to run !!
>> >>>
>> >>> The query is just :
>> >>> *UPDATE grille SET inter = 0*
>> >>>
>> >
>> >>> So any ideas why is it soo long???
>> >>>
>> >>
>> >> You've got three indexes, so you have the update on the table *and* the
>> >> three indexes. Moreover, one of your indexes is a GiST with some
>> >> PostGIS
>> >> geometry. It takes usuaully quite some (long) time to update such
>> >> index.
>> >
>> > That only holds if the index needs to be updated. He's updating a column
>> > that is not indexed, so with a bit of luck the HOT might kick in. In
>> > that
>> > case the table would not bloat, the indexes would not need to be updated
>> > (and would no bloat) etc.
>> >
>> > The question is whether HOT may work in this particular case.
>>
>> HOT unfortunately does not provide a whole lot of benefit for this
>> case. HOT like brief, small transactions to the in page cleanup work
>> can be done as early as possible. ÂThe nature of postgres is such that
>> you want to do everything you can to avoid table wide updates (up to
>> and including building a new table instead).
>>
>> merlin
>
>

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux