Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kostya/pg_reindex
Console utility for gracefully rebuild indexes/pkeys for PostgreSQL, with minimal locking in semi-auto mode.
https://github.com/kostya/pg_reindex
indexes pkey postgresql rebuild reindex
Last synced: 6 days ago
JSON representation
Console utility for gracefully rebuild indexes/pkeys for PostgreSQL, with minimal locking in semi-auto mode.
- Host: GitHub
- URL: https://github.com/kostya/pg_reindex
- Owner: kostya
- License: mit
- Created: 2012-06-07T20:36:06.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2016-08-20T13:28:51.000Z (about 8 years ago)
- Last Synced: 2024-10-25T01:30:24.718Z (14 days ago)
- Topics: indexes, pkey, postgresql, rebuild, reindex
- Language: Ruby
- Homepage:
- Size: 19.5 KB
- Stars: 20
- Watchers: 6
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: MIT-LICENSE
Awesome Lists containing this project
README
Pg Reindex
==========Console utility for gracefully rebuild indexes/pkeys for PostgreSQL, with minimal locking in semi-auto mode.
Install:
$ gem install pg_reindex
Using:export PGRE_CFG=/some/path/database.yml
pgre --helpDatabase.yml from rails application. User in connection settings should be an owner of relations. And for rebuild pkey, should be a superuser.
Tasks:
pgre dbs # Show list of databases from database.yml
pgre install ENV # Install function swap_for_pkey to database
pgre rebuild ENV (table|index)[,(table|index)] # rebuild tables,indexes,pkeys
pgre tables ENV # Show tables of databaseUse case:
# Show databases
pgre dbs# Show tables with indexes, which full size more than 1Gb
pgre tables production -s 1000# Show process without really rebuild
pgre rebuild production users,some_index1
# Rebuild indexes
pgre rebuild production users --write
# Rebuild indexes and no ask confirmation (not recommended)
pgre rebuild production users --write --no-askExplanation/Warning:
--------------------Rebuild index produces sqls:
1. CREATE INDEX CONCURRENTLY bla2 on some_table USING btree (some_field);
2. ANALYZE some_table;
3. DROP INDEX bla;
4. ALTER INDEX bla2 RENAME TO bla;
1 can be blocked by long running query(LRQ), or autovacuum (in this case kill autovacuum or wait LRQ).
**By careful**, if between 1 and (3,4) started LRQ or autovacuum, in this case (3,4) will block all queries on this table.
If it happens, and (3,4) not quit after < 30s, you should stop (3,4) by cancel query in PostgreSQL, and later execute manually.
Rebuild pkey produces sqls:
1. CREATE UNIQUE INDEX CONCURRENTLY some_table_pkey2 on some_table USING btree (ID);
2. ANALYZE some_table;
3. SELECT swap_for_pkey('public', 'some_table_pkey', 'some_table_pkey2');Same issue with 1 and 3.
MIT-LICENCE