PostgreSQL 觀念指引
觀念指引
執行程序觀念
postgres
「postgres」是伺服器的執行程序,負責管理資料庫的檔案、受理用戶端的連線要求、執行相對應的資料庫動作
1.2. 基礎架構
postgres指令列表
psql
psql 是一個 PostgreSQL 終端機介面的用戶端工具程式。它讓你能夠以互動的方式輸入查詢,將其發送到 PostgreSQL,並顯示查詢結果。輸入來源可以是檔案,也可以是命令列參數。此外,psql 提供了許多自訂命令與各種類似於 shell 的功能,方便撰寫腳本和自動化各種任務的執行。
執行 PostgreSQL 互動式的終端程式,稱作 psql,它可以讓你輸入、編輯、執行 SQL 指令。
角色權限觀念
PostgreSQL 並無區分使用者與角色的概念,資料庫訪問權限一律是通過角色來處理的。
一個角色代表一個資料庫用戶或者一個用戶群組。通常會根據「是否能登入」來決定這是角色還是使用者。
PostgreSQL 支持多種身份認證方式。最常用的方法如下:
- Trust - 只要滿足
pg_hba.conf
定義的條件,一個角色就可以不使用密碼就能連接服務器 - Password - 通過密碼,一個角色可以連接服務器。密碼可以被存儲為
scram-sha-256
、md5
、password
(明文)。 - Ident - 僅僅支持 TCP/IP 連接。它通常通過一個可選的用戶名對應表,得到客戶端操作系統用戶名。
- Peer - 和 Ident 一樣,僅僅支持本地連接。
PostgreSQL 客戶端身份驗證通常被定義在/etc/postgresql/14/main/pg_hba.conf
文件中。預設情況下,對於本地連接,PostgreSQL 被設置成身份認證防範 peer。
根據使用手冊 19.1. PostgreSQL 使用者帳號 安裝後預設的使用者名稱為 postgres
角色權限觀念詳見手冊 21. 使用者認證
例行性資料清理
PostgreSQL 資料庫需要定期維護,稱為資料庫清理(vacuum)。 對於一裝的執行環境而言,透過 autovacuum 背景程序進行資料庫清理就足夠了,這在 24.1.6 節中有描述。您可能需要調整其中所描述的自動清除參數,以獲得您的情況的最佳結果。 一些資料庫管理員希望用手動管理的 VACUUM 命令來補充或替換背景程序的活動,這些命令通常根據 cron 或 Task Scheduler 的腳本計劃執行。 要正確設定手動管理的資料庫清理,了解接下來幾小節中討論的問題至關重要。依靠自動清理的管理員可能仍然希望瀏覽這些內容以幫助他們理解和調整自動清理。
例行性資料清理
VACUUM
VACUUM 回收不再使用的儲存空間。在普通的 PostgreSQL 操作中,被刪除或被更新的儲存空間實際上並不會真實在磁碟上刪除;它們會一直存在,直到 VACUUM 完成。因此,必須定期執行 VACUUM,尤其是在經常更新的資料表上。
在沒有指定 TABLE 及欄位的情況下,VACUUM 處理目前資料庫中目前使用者有權清理的每個資料表。使用參數的話,VACUUM 就能只處理某個資料表。
VACUUM ANALYZE 為每個選定的資料表執行 VACUUM 然後進行 ANALYZE 分析。 這是日常維護腳本的便捷組合形式。有關其處理的更多詳細訊息,請參閱 ANALYZE。
普通的 VACUUM(不帶FULL)只是回收空間並使其可供重複使用。由於沒有獲得排他鎖定,此指令的這種形式可以與正常讀取和寫入資料表平行操作。但是,額外的空間不會還回到作業系統(大多數情況下)。它只是保持在同一張資料表內重新使用。我們可以利用多個 CPU 來處理索引。此功能稱為平行清理 (parallel vacuum)。要停用此功能,可以使用 PARALLEL 選項並將平行工作程序數量指定為零。 VACUUM FULL 會將資料表中的全部內容重寫為新的磁碟檔案,不會遺留額外的空間佔用,可將未使用的空間還回作業系統。這種形式顯然要慢得多,並且在處理每個資料表時需要排它鎖定 (exclusive lock)。
當選項列表被括號包圍時,選項可以按任意順序書寫。如果沒有括號,必須按照上面所示的順序指定選項。PostgreSQL 9.0 中加入了括號語法;未使用括號的語法已被棄用。
VACUUM — 資源回收並且選擇性地重整資料庫