PostgreSQL reindexdb

2021-09-13 16:56 更新

reindexdb — 重索引一個(gè)PostgreSQL數(shù)據(jù)庫

大綱

reindexdb [connection-option...] [option...] [ --schema | -S schema ] ... [ --table | -t table ] ... [ --index | -i index ] ... [dbname]

reindexdb [connection-option...] [option...] --all | -a

reindexdb [connection-option...] [option...] --system | -s [dbname]

描述

reindexdb是用于重建一個(gè)PostgreSQL數(shù)據(jù)庫中索引的工具。

reindexdb是 SQL 命令REINDEX的一個(gè)包裝器。在通過這個(gè)工具和其他方法訪問服務(wù)器來重索引數(shù)據(jù)庫之間沒有實(shí)質(zhì)性的區(qū)別。

選項(xiàng)

reindexdb接受下列命令行參數(shù):

-a
--all

重索引所有數(shù)據(jù)庫。

--concurrently

使用 CONCURRENTLY 選項(xiàng)。 請(qǐng)參閱 REINDEX,其中詳細(xì)解釋了此選項(xiàng)的所有注意事項(xiàng)。

[-d] dbname
[--dbname=]dbname

當(dāng) -a/--all 未使用時(shí),指定要重新索引的數(shù)據(jù)庫的名稱。 如果未指定,則從環(huán)境變量 PGDATABASE 中讀取數(shù)據(jù)庫名稱。 如果未設(shè)置,則使用為連接指定的用戶名。 dbname 可以是 連接字符串。 如果是這樣,連接字符串參數(shù)將覆蓋任何沖突的命令行選項(xiàng)。

-e
--echo

回顯reindexdb生成并發(fā)送到服務(wù)器的命令。

-i index
--index=index

只是重建index??梢酝ㄟ^寫多個(gè)-i開關(guān)來重建多個(gè)索引。

-j njobs
--jobs=njobs

通過同時(shí)運(yùn)行 njobs 命令并行執(zhí)行 reindex 命令。 此選項(xiàng)可能會(huì)減少處理時(shí)間,但也會(huì)增加數(shù)據(jù)庫服務(wù)器上的負(fù)載。

reindexdb將打開到數(shù)據(jù)庫的njobs連接,因此請(qǐng)確保max_connections設(shè)置足夠高,可以容納所有連接。

請(qǐng)注意,此選項(xiàng)與 --index--system 選項(xiàng)不兼容。

-q
--quiet

不顯示進(jìn)度消息。

-s
--system

索引數(shù)據(jù)庫的系統(tǒng)目錄。

-S schema
--schema=schema

只對(duì)schema重建索引。 通過寫多個(gè)-S開關(guān)可以指定多個(gè)要重建索引的模式。

-t table
--table=table

只索引table??梢酝ㄟ^寫多個(gè)-t開關(guān)來重索引多個(gè)表。

-v
--verbose

在處理時(shí)打印詳細(xì)信息。

-V
--version

打印reindexdb版本并退出。

-?
--help

顯示有關(guān)reindexdb命令行參數(shù)的幫助并退出。

reindexdb也接受下列命令行參數(shù)用于連接參數(shù):

-h host
--host=host

指定運(yùn)行服務(wù)器的機(jī)器的主機(jī)名。如果該值以一個(gè)斜線開始,它被用作 Unix 域套接字的目錄。

-p port
--port=port

指定服務(wù)器正在監(jiān)聽連接的 TCP 端口或本地 Unix 域套接字文件擴(kuò)展。

-U username
--username=username

要作為哪個(gè)用戶連接。

-w
--no-password

從不發(fā)出一個(gè)口令提示。如果服務(wù)器要求口令認(rèn)證并且沒有其他方式提供口令(例如一個(gè).pgpass文件),那兒連接嘗試將失敗。這個(gè)選項(xiàng)對(duì)于批處理任務(wù)和腳本有用,因?yàn)樵谄渲袥]有一個(gè)用戶來輸入口令。

-W
--password

強(qiáng)制reindexdb在連接到一個(gè)數(shù)據(jù)庫之前提示要求一個(gè)口令。

這個(gè)選項(xiàng)不是必不可少的,因?yàn)槿绻?wù)器要求口令認(rèn)證,reindexdb將自動(dòng)提示要求一個(gè)口令。但是,reindexdb將浪費(fèi)一次連接嘗試來發(fā)現(xiàn)服務(wù)器想要一個(gè)口令。在某些情況下值得用-W來避免額外的連接嘗試。

--maintenance-db=dbname

當(dāng)使用 -a/--all 時(shí),指定要連接到的數(shù)據(jù)庫名稱以發(fā)現(xiàn)應(yīng)重新索引哪些數(shù)據(jù)庫。 如果未指定,將使用 postgres 數(shù)據(jù)庫, 如果不存在,將使用 template1。 這可以是連接字符串。 如果是這樣,連接字符串參數(shù)將覆蓋任何沖突的命令行選項(xiàng)。 此外,在連接到其他數(shù)據(jù)庫時(shí),將重新使用除數(shù)據(jù)庫名稱本身之外的連接字符串參數(shù)。

環(huán)境

PGDATABASE
PGHOST
PGPORT
PGUSER

默認(rèn)連接參數(shù)

PG_COLOR

規(guī)定在診斷消息中是否使用顏色??赡艿闹禐?code class="literal">always、 auto、never。

和大部分其他PostgreSQL工具相似,這個(gè)工具也使用libpq(見第 33.14 節(jié))支持的環(huán)境變量。

診斷

在有困難時(shí),可以在REINDEXpsql中找潛在問題和錯(cuò)誤消息的討論。數(shù)據(jù)庫服務(wù)器必須運(yùn)行在目標(biāo)主機(jī)上。同樣,任何 libpq前端庫使用的默認(rèn)連接設(shè)置和環(huán)境變量都將適用于此。

注解

reindexdb可能需要多次連接到PostgreSQL服務(wù)器,每一次都會(huì)詢問一個(gè)口令。在這種情況下使用一個(gè)~/.pgpass文件會(huì)更方便。詳見第 33.15 節(jié)

例子

要重索引數(shù)據(jù)庫test

$ reindexdb test

要重索引名為abcd的數(shù)據(jù)庫中的表foo和索引bar

$ reindexdb --table foo --index bar abcd

參見

REINDEX


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)