2
我試圖用btree索引創建一個整數列的索引,但它永遠持續(超過2小時!)。 該表有17.514.879行。我沒有想到它會持續很長時間。在postgres上永久創建索引
經過將近2.5小時後,與數據庫的連接剛剛死亡。當我重新接觸它時,指數就在那裏,但我不知道這個指數有多好。
如何確保索引不會被丟失的連接搞砸?
我試圖用btree索引創建一個整數列的索引,但它永遠持續(超過2小時!)。 該表有17.514.879行。我沒有想到它會持續很長時間。在postgres上永久創建索引
經過將近2.5小時後,與數據庫的連接剛剛死亡。當我重新接觸它時,指數就在那裏,但我不知道這個指數有多好。
如何確保索引不會被丟失的連接搞砸?
psql
是精細連接到數據庫並運行\d table_name
(其中table_name
是你的表的名稱)。例如:
grn=# \d users
Table "public.users"
Column | Type | Modifiers
--------+------------------------+-----------
name | character varying(255) |
Indexes:
"users_name_idx" btree (name)
您會在表格模式下方看到索引。如果索引損壞,它將被標記爲如此。
您可以在不鎖定整個表,但甚至慢的方式創建索引創建索引。爲此,您需要將CONCURRENTLY
添加到CREATE INDEX
。例如:
CREATE INDEX CONCURRENTLY users_name_idx ON users(name);
如果索引損壞,你可以刪除它並重新創建CONCURRENTLY
或使用REINDEX INDEX index_name
。例如:
REINDEX INDEX users_name_idx
將重新創建users_name_idx
。
該聲明最有可能等待鎖定:https://wiki.postgresql.org/wiki/Lock_Monitoring如果索引在那裏,應該沒問題 –