亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

PostgreSQL數(shù)據(jù)庫表在刪除數(shù)據(jù)后磁盤空間未釋放,該怎么辦?
主流的壓縮表工具有哪些?該如何選擇?

1、從空間未釋放說起

近期生產(chǎn)環(huán)境出現(xiàn)一張表占用size已達2T,且會定期刪除記錄,但是,空間一直未釋放,是何原因?

原因就在于vacuum,而vacuum怎么存儲,清理數(shù)據(jù)的可參考官方文檔進行查看。https://www.postgresql.org/docs/current/routine-vacuuming.html?。

出現(xiàn)表一直膨脹,該如何處理?開源社區(qū)的魅力就在于很多大神會提供很多工具來解決對應(yīng)的問題,而本問題則有2種主要的工具:pg_repack和pgcompacttable。

2、工具對比

(1)pg_repack

pg_repack的處理方式是創(chuàng)建一張新表,再將歷史數(shù)據(jù)從原表中拷貝一份到新表。在拷貝過程中為了避免表被鎖定,會創(chuàng)建了一個額外的日志表來記錄原表的改動,并添加了一個涉及INSERT、UPDATE、DELETE操作的觸發(fā)器將變更記錄同步到日志表。當(dāng)原始表中的數(shù)據(jù)全部導(dǎo)入到新表中,索引重建完畢以及日志表的改動全部完成后,pg_repack會用新表替換舊表,并將原舊表Drop掉。此工具過程簡單且靠譜,單需要額外的磁盤空間來報錯臨時創(chuàng)建的中間表。

(2)pgcompacttable

pgcompacttable利用了PostgreSQL的一個有趣特性:在執(zhí)行INSERT和UPDATE操作時,會將所有新版本的行移到表最開始的可用空間。此為pgcompacttable工具的關(guān)鍵,因為如果從末端反向開始更新所有行,最終所有可用空間被這些行填充,并將表尾部的空間全部釋放以便讓定期vacuum進行truncate。這樣一來,pgcompacttable通過批量更新和vacuum強制移動,最終整個表被重新整理,達到壓縮的效果。此工具對磁盤空間要求低,且性能影響可控。

(3)對比

為了便于大家選擇工具,簡單做了一個對比說明供參考。

 

pg_repack

pgcompacttable

是否需要保證性能

是否移動表/索引

是否有足夠空間

壓縮速率是否高

小結(jié):因很多場景下磁盤空間有限,因而經(jīng)常選擇使用pgcompacttable較多,下面就記錄一下pgcompacttable的安裝及使用。

3、pgcompacttable部署及使用實例

(1)添加pgstattuple

pgcompacttable工具使用過程中需要依賴pgstattuple,因此需先添加pgstattuple。如果是源碼安裝的postgresql,則源碼里包含了postgresql-contrib,因此,進行編譯及安裝即可。

yum install perl-Time-HiRes perl-DBI perl-DBD-Pg -y
cd contrib/
make
make  install

編譯完成后會產(chǎn)生幾個文件。

lib/pgstattuple.so。

share/extension/pgstattuple*。

之后在所需要使用的數(shù)據(jù)庫里添加pgstattuple。

psql -d testdb
testdb=# create extension if not exists pgstattuple;
CREATE EXTENSION

(2)部署pgcompacttable

下載依賴及安裝包后即可使用。

# yum install perl-Time-HiRes perl-DBI perl-DBD-Pg -y
# su - postgres
$ git clone https://Github.com/dataegret/pgcompacttable.git(3)pgcompacttable使用

pgcompacttable可以對database級別、schema級別、table級別進行壓縮。

./pgcompacttable -h localhost -U postgres -d testdb
./pgcompacttable -h localhost -U postgres -d testdb  -n public
./pgcompacttable -h localhost -U postgres -d testdb -n public -t test_table1

分享到:
標(biāo)簽:PostgreSQL
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定