PostgreSQL每日一貼 資料庫磁碟空間占用

2021-06-28 04:57:41 字數 907 閱讀 6934

任何資料庫都存在表膨脹的風險,資料庫設計時,應該識別出會頻繁更新(包括新增、刪除、更新記錄)的表。對錶、表空間做出可能達到的最大值的預判。

資料庫空閒空間管理,postgresql 8.3及之前前採用的是單一檔案管理資料檔案空閒空間的方式,postgresql 8.4修改為了對每個資料檔案都建立乙個空閒空間管理檔案來管理空閒空間,但是索引空閒空間由於其特殊性仍舊無法合理管理。並且作為資料庫管理員,不應該強依賴於資料庫對空閒空間的管理。應該增加定時檢查,粒度可以到表空間,也可以到表,當表空間、表超過我們的預期時能夠上報告警或者自動觸發**。如果觸發**機制後仍舊超過閾值,則一定要上報告警。防止問題累計直至達到了磁碟空間上限或者表空間上限而導致業務失敗。

對於postgresql而言,提供了autovacuum機制來定時掃瞄處理空閒空間,要合理的設定autovacuum的相關引數,使得其空閒空間管理機制能夠正常執行。

postgresql強行**空間有如下方法:

1.對於表,可以使用vacuum full方法,但是這個會拿錶級鎖,阻塞查詢、更新等所有操作。

2.對於索引,可以採用下面三種方法之一

1)cluster

2)reindex

3)create new index,drop index,rename index  優點:拿鎖時間短,對業務影響小。

或者引入pg_reorg外掛程式,該外掛程式可以對有唯一索引的表**,基本原理是建立乙個和原表一模一樣的新錶,然後遷移資料。優點是拿鎖時間很短,對業務營銷較小。

autovacuum使用要注意如下:

1. autovacuum只會**檔案最後的那部分空間。記錄所在檔案位置可以通過查詢記錄的ctid確認。

2.autovacuum處理所有表使用的資料使用者為initdb指定的那個使用者(預設的使用者名稱與安裝資料庫的作業系統使用者名稱相同)

Python例項 每日一貼

def function tips 功能 每天輸出一條勵志文字 import datetime 匯入日期時間類 定義乙個列表 mot 今天星期一 n人生充滿了不確定,和驚喜。今天星期二 n人生亦可燃燒,亦可腐敗,我願燃燒,耗盡所有的光芒。今天星期三 n毅力和耐性在某種程度上將決定乙個人會成為什麼樣的...

敏捷開發每日一貼 敏捷估算方法

敏捷估算方法 無論是團隊研發一款產品或者開發某乙個專案,我們都需要回答 我們大概什麼時間能夠完成?或者到某乙個時間點,我們能夠做到什麼程度,因此和傳統的開發模式一樣,我們在故事拆分之後需要對我們需要做的事情進行工作量的估算。相對於傳統的工作量估算方式,敏捷估算有如下幾個特點 1.團隊集體估算 在sc...

敏捷開發每日一貼 豐田生產系統TPS

豐田生產系統tps 敏捷思想深受日本工業界最佳實踐的影響,尤其是豐田推行的tps,常見的敏捷實踐都能對應到tps的實踐中,所以這裡對tps做個簡介。tps實踐 agile實踐 實時管理系統 時間盒自働化 jidoka 自動化看板 kanban 看板 故事牆 消除浪費 限制在製品 拉式pull pul...