1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 07:08:01 +00:00

Add Create An Index Without Locking The Table as a postgres til

This commit is contained in:
jbranchaud
2019-06-01 12:22:38 -05:00
parent 930e180d9f
commit 957d14548a
2 changed files with 22 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ smart people at [Hashrocket](http://hashrocket.com/).
For a steady stream of TILs from a variety of rocketeers, checkout
[til.hashrocket.com](https://til.hashrocket.com/).
_817 TILs and counting..._
_818 TILs and counting..._
---
@@ -393,6 +393,7 @@ _817 TILs and counting..._
- [Convert A String To A Timestamp](postgres/convert-a-string-to-a-timestamp.md)
- [Count Records By Type](postgres/count-records-by-type.md)
- [Create A Composite Primary Key](postgres/create-a-composite-primary-key.md)
- [Create An Index Without Locking The Table](postgres/create-an-index-without-locking-the-table.md)
- [Create hstore From Two Arrays](postgres/create-hstore-from-two-arrays.md)
- [Create Table Adds A Data Type](postgres/create-table-adds-a-data-type.md)
- [Creating Conditional Constraints](postgres/creating-conditional-constraints.md)

View File

@@ -0,0 +1,20 @@
# Create An Index Without Locking The Table
When creating an index for a column, the process of building the index will
lock the column's table. For small datasets this isn't a concern because the
index will take no time at all to create. For larger datasets, the lock could
last long enough to create meaningful downtime. This can all be avoided by
telling Postgres to build the index concurrently.
```sql
create index concurrently idx_book_isbns on books(isbn);
```
Creating the index this way will take a bit longer and put more strain on
machine resources, but it allows concurrent inserts, updates, or deletes on the
table. In other words, you can add an index to a large table in a production
environment without bringing down your app.
Read more about the [details and potential
caveats](https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-CONCURRENTLY)
in the docs.