自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PostgreSQL 主流壓縮表工具推薦

數(shù)據(jù)庫(kù) PostgreSQL
出現(xiàn)表一直膨脹,該如何處理?開源社區(qū)的魅力就在于很多大神會(huì)提供很多工具來(lái)解決對(duì)應(yīng)的問(wèn)題,而本問(wèn)題則有2種主要的工具:Pg_repack和Pgcompacttable。

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

1、從空間未釋放說(shuō)起

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

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

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

2、工具對(duì)比

(1)pg_repack

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

(2)pgcompacttable

pgcompacttable利用了PostgreSQL的一個(gè)有趣特性:在執(zhí)行INSERT和UPDATE操作時(shí),會(huì)將所有新版本的行移到表最開始的可用空間。此為pgcompacttable工具的關(guān)鍵,因?yàn)槿绻麖哪┒朔聪蜷_始更新所有行,最終所有可用空間被這些行填充,并將表尾部的空間全部釋放以便讓定期vacuum進(jìn)行truncate。這樣一來(lái),pgcompacttable通過(guò)批量更新和vacuum強(qiáng)制移動(dòng),最終整個(gè)表被重新整理,達(dá)到壓縮的效果。此工具對(duì)磁盤空間要求低,且性能影響可控。

(3)對(duì)比

為了便于大家選擇工具,簡(jiǎn)單做了一個(gè)對(duì)比說(shuō)明供參考。


pg_repack

pgcompacttable

是否需要保證性能

是否移動(dòng)表/索引

是否有足夠空間

壓縮速率是否高

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

3、pgcompacttable部署及使用實(shí)例

(1)添加pgstattuple

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

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

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

lib/pgstattuple.so。

share/extension/pgstattuple*。

之后在所需要使用的數(shù)據(jù)庫(kù)里添加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可以對(duì)database級(jí)別、schema級(jí)別、table級(jí)別進(jìn)行壓縮。

./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
責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2020-11-17 08:58:32

開源工具報(bào)表

2021-01-04 09:52:35

Git開源報(bào)表工具

2020-12-24 07:49:28

報(bào)表工具JimureportFinereport

2017-02-14 11:28:29

互聯(lián)網(wǎng) 報(bào)表

2021-02-07 09:00:00

PostgreSQL數(shù)據(jù)庫(kù)工具

2009-07-31 12:59:21

Java報(bào)表工具

2023-11-30 16:29:16

PostgreSQL數(shù)據(jù)庫(kù)Kubernetes

2017-02-14 20:03:34

報(bào)表工具敏捷BI定制化

2017-02-28 19:34:57

報(bào)表工具APP前端

2017-08-17 14:57:57

大數(shù)據(jù)Python數(shù)據(jù)圖表工具

2016-05-25 14:50:34

Linux文件壓縮工具

2017-09-14 10:45:47

PostgreSQL日志分析pgBadger

2020-11-17 16:22:45

開源工具報(bào)表

2012-09-17 11:12:24

網(wǎng)絡(luò)監(jiān)控工具網(wǎng)絡(luò)監(jiān)控

2016-09-19 14:42:12

大數(shù)據(jù)SQLPig

2024-01-29 00:10:00

2009-05-27 08:52:05

2020-01-18 15:15:11

程序員WindowsJava

2020-04-03 16:07:31

DevSecOps開源安全工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)