Re: CREATE INDEX CONCURRENTLY? - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: CREATE INDEX CONCURRENTLY?
Date
Msg-id 54539F53.8000300@dunslane.net
Whole thread Raw
In response to CREATE INDEX CONCURRENTLY?  (Mark Woodward <mark.woodward@actifio.com>)
List pgsql-hackers
On 10/31/2014 10:28 AM, Mark Woodward wrote:
> I have not kept up with PostgreSQL changes and have just been using 
> it. A co-worker recently told me that you need to word "CONCURRENTLY" 
> in "CREATE INDEX" to avoid table locking. I called BS on this because 
> to my knowledge PostgreSQL does not lock tables. I referenced this 
> page in the documentation:
>
> http://www.postgresql.org/docs/9.3/static/locking-indexes.html

That page refers to using the indexes, not creating them.

>
> However, I do see this sentence in the indexing page that was not in 
> the docs prior to 8.0:
>
> "Creating an index can interfere with regular operation of a database. 
> Normally PostgreSQL locks the table to be indexed against writes and 
> performs the entire index build with a single scan of the table."
>
> Is this true? When/why the change?
>
> When we use "concurrently," it seems to hang. I am looking into it.
>
>


Creating indexes always did lock tables. See for example 
http://www.postgresql.org/docs/7.4/static/explicit-locking.html#LOCKING-TABLES 
there CREATE INDEX is documented to take a SHARE lock on the table.

CONCURRENTLY was an additional feature to allow you to get around this, 
at the possible cost of some extra processing.

So we haven't made things harder, we've made them easier, and your 
understanding of old releases is incorrect.

cheers

andrew



pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: group locking: incomplete patch, just for discussion
Next
From: Greg Stark
Date:
Subject: Re: CREATE INDEX CONCURRENTLY?