1. 程式人生 > >PostgreSQL每日一貼-資料庫磁碟空間佔用

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

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

資料庫空閒空間管理,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指定的那個使用者(預設的使用者名稱稱與安裝資料庫的作業系統使用者名稱相同)

相關推薦

PostgreSQL每日-資料庫磁碟空間佔用

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

次Linux伺服器磁碟空間佔用,大檔案查詢

好久沒寫東西了,很久之前弄了個伺服器玩玩,寫了點東西在上面放著,一直在不停的抓資料,也就沒怎麼看,最近閒來無事登入後臺檢視,發現我的媽呀,伺服器磁碟快滿了 剛開始以為抓取的太多,資料庫資料膨脹佔用了,於是登入MySQL檢視,發現有20多萬條記錄,咋看似乎佔

mysql資料庫磁碟空間佔用

最近做專案用到mysql資料庫,需要考慮1000多個使用者的表大概會佔用磁碟空間的大小,於是上網查詢了一些資料,發現確實很好用,決定寫下來。 個人只需要兩個: 1>查詢所有的資料庫佔用磁碟空間大小的sql語句: select TABLE_SCHEMA, concat(

《AndroidStudio每日》7. 怎樣將本地變更文件移到其他的changelist?

control borde list 選中 ng- get 技術 change div 操作方法:進入Version Control —> Local Changes ,會顯示本地變更列表分組.假設你想將某個changelist中的文件轉移到其他的changeli

《AndroidStudio每日》2.高速查看項目中近期的變更

mod round -h ng-click lin 快捷 pos top neu 《AndroidStudio每日一貼》2.高速查看項目中近期的變更高速查看項目中近期

java每日練------資料庫連線

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class DbOperate {  &nbs

【敏捷開發每日】:看板方法

看板方法 看板(Kanban,來源於日語)最初是豐田汽車公司的大野耐一於20世紀50年代發明的,當時是從超級市場的執行機制中得到啟示,將看板作為一種生產、運送指令的傳遞工具而被創造出來的。 經過60多

【敏捷開發每日】採用物理看板還是電子看板?

物理看板還是電子看板? 敏捷宣言有一句“個體和互動勝於流程和工具”。雖然敏捷專案的最終成敗與看板本身是物理的還是電子的沒有直接關係。這裡只是討論:如果你打算用看板,那麼哪種看板更適合你?當然前提都是要

【敏捷開發每日】看板原理三:時間箱管理

看板原理三:時間箱管理 時間箱管理TimeBoxing是敏捷方法中的一條重要實踐,其含義是在專案中的某些活動的完成時間必須在規定的時間內進行並在規定時間內完成。該實踐有助於提高整個專案的工作效率,提

【敏捷開發每日】敏捷實踐Showcase的七宗罪

敏捷實踐Showcase的七宗罪 Showcase(其實就是SprintReview,演示會、評審會)就是開發團隊把開發好的功能給客戶的Product Owner等業務相關人員演示,以獲取他們對所開發

【敏捷開發每日】看板原理:裡特定律

看板原理一:裡特定律 裡特定律(Little's Law)源自排隊理論,是IT系統性能建模中最廣為人知的定律。 裡特定律揭示了前置時間(Lead Time)、在製品數量(Work In Progre

【敏捷開發每日】:豬和雞的故事

豬和雞的故事 關於雞與豬的故事有很多種版本,被用在各種不同的場合,管理的、營銷的、敏捷開發的,大體相同,但稍有差異。 故事一:有一隻雞和一頭豬合夥開飯店,雙方各佔50%股份。雞對豬說:“我每天下

【敏捷開發每日】:如何理解敏捷開發?

 如何理解敏捷開發? 沒有參與過敏捷開發專案的人可能覺得敏捷開發抽象難懂。舉個例子,敏捷開發像是在衝浪,一直處於動態、不斷變化的環境中。在專案研發過程中出現的需求變化和挑戰就是你在衝浪時要應對

【敏捷開發每日】自組織敏捷團隊的特點

自組織敏捷團隊的特點 敏捷常提到自組織團隊,通俗的講它是一個由外部建立,然後給與授權,自行決定行動綱領的一個團隊。這個團隊接受外部給與的任務和約束條件,自行決定如何完成任務。在這個團隊中,團隊成員自己

【敏捷開發每日】:Scrum的起源

 Scrum的起源 Scrum的原始含義 Scrum原始含義是指英式橄欖球次要犯規時在犯規地點對陣爭球。Sprint在英文中指那種竭盡全力的衝刺短跑。爭球雙方各有8個隊員參與,各方出3名

【敏捷開發每日】寫不寫文件?

寫不寫文件? 敏捷宣言更強調“可以工作的軟體勝過面面俱到的文件”,但並不是說不需要文件。敏捷的目的是儘量減少浪費,所以採取了極端的邏輯,把所有的文件都視為浪費。但並不意味著文件可以被完全拋棄掉。文件對

【敏捷開發每日】敏捷估算方法

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

Linux中df命令:用來檢查linux伺服器的檔案系統的磁碟空間佔用情況

linux中df命令的功能是用來檢查linux伺服器的檔案系統的磁碟空間佔用情況。可以利用該命令來獲取硬碟被佔用了多少空間,目前還剩下多少空間等資訊。 1.命令格式: df [選項] [檔案] 2.命令功能: 顯示指定磁碟檔案的可用空間。如果沒有檔名被指定,則所有

記錄次Centos磁碟空間佔滿的解決辦法

解決前 磁碟使用情況: 第二塊磁碟使用率達到97% [root@feng020 ~]# df -l Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvda1 2

vmware磁碟空間佔用越來越大

背景 vmware虛擬機器安裝作業系統,在使用過程中,不知什麼原因,磁碟佔用空間越來越大。 原因 虛擬機器在使用過程中,需要安裝的軟體我都是通過拖拽上傳的安裝包。由於虛擬機器會快取拖拽檔案,不自動刪除