五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

postgresql清理表空間

2023-07-09 21:57 作者:我想問問天  | 我要投稿

# 前言


最近在用postgresql查詢數(shù)據(jù)的時候,發(fā)現(xiàn)有個表的查詢一直很慢,這里暫且取名A表,但是數(shù)據(jù)量并沒有特別大,才幾萬的數(shù)據(jù)量,而且發(fā)現(xiàn)跟這個表同schema的數(shù)據(jù)表有個幾千萬的,但是查詢都比這個A表快很多。后來查找了一系列資料發(fā)現(xiàn),是A表占用的空間太大,會影響查詢的性能,使用命令查看發(fā)現(xiàn)大概有4G左右的磁盤查勇,而幾千萬的那個表占用空間才幾百M(fèi),于是使用命令清理了A表的磁盤占用,處理完之后就幾十M的空間,而且查詢變得很快。




# 處理步驟


## 1.查看表占用空間大小


pg里面查看表空間大小有好幾種方式,如下:


### 1.1 \dt+ 命令


這是 psql 命令行中的命令,可以列出所有表及其大小信息, 如:


```

?postgres=# \dt+ t1

? ? ? ? ? ? ?List of relations

?Schema |? ?Name? ?| Type |? Owner? | Size | Description?

?--------+--------------+-------+-----------+-------+-------------

?public | t1? ? ? | table | postgres | 16 MB |?

```




### 1.2 pg_total_relation_size() 函數(shù)


這個函數(shù)可以直接查詢一個表的大小,如:


```

?sql

?SELECT pg_total_relation_size('t1');

```




### 1.3 pg_size_pretty() 函數(shù)


這個函數(shù)可以將字節(jié)大小轉(zhuǎn)換為人類比較方便閱讀的模式:


```

?sql

?SELECT pg_size_pretty(pg_total_relation_size('t1'));

?輸出:

?16MB

```


?


?


## 2.清理磁盤空間

?VACUUM FULL 是 PostgreSQL 中的一個命令,用于對表進(jìn)行完整的垃圾回收和碎片整理。


?VACUUM FULL 命令會做以下操作:


### 2.1 完整回收未使用的空間


普通的 VACUUM 命令只會回收此刻可以回收的空間,但有些空間必須等到事務(wù)結(jié)束才可以回收。VACUUM FULL 會等待所有事務(wù)結(jié)束,徹底回收所有未使用空間。


###2.2 重寫表數(shù)據(jù)


VACUUM FULL 會重寫表中的每一行,整理存儲碎片,壓縮表空間。


### 2.3 重建索引


VACUUM FULL 會重建表所有的索引,整理索引碎片并壓縮索引空間。


###2.4 更新統(tǒng)計(jì)信息


VACUUM FULL 會重新計(jì)算表的統(tǒng)計(jì)信息, 包括行數(shù)、空間大小等。


###2.5 清理回滾段


VACUUM FULL 會縮小和清空回滾段,釋放更多空間。


**注:使用VACUUM FULL或者VACUUM不會鎖表**


?所以VACUUM FULL 應(yīng)該謹(jǐn)慎執(zhí)行, 最好是業(yè)務(wù)比較空間的時候執(zhí)行,一般建議每隔幾個月執(zhí)行一次。




# 總結(jié)


1.數(shù)據(jù)表在頻繁的更新,寫入,刪除等操作會產(chǎn)生大量的磁盤碎片導(dǎo)致性能下降,使用VACUUM或者VACUUM FULL可以清理掉多余的空間


2.不過要注意因?yàn)閂ACUUM FULL本身清理也會有較大的性能消耗,而且會鎖表,所以使用的時候要謹(jǐn)慎,不要在業(yè)務(wù)頻繁調(diào)用的時候清理



postgresql清理表空間的評論 (共 條)

分享到微博請遵守國家法律
亳州市| 拜泉县| 金堂县| 奇台县| 阿合奇县| 红桥区| 泰和县| 盘锦市| 阿拉善右旗| 东乌珠穆沁旗| 浏阳市| 漳浦县| 临汾市| 治多县| 洪江市| 根河市| 永平县| 淳化县| 江西省| 台北市| 临武县| 平顺县| 青神县| 乌拉特后旗| 肇东市| 扶风县| 镇赉县| 盐亭县| 邢台市| 龙口市| 类乌齐县| 嘉荫县| 阳西县| 灵武市| 甘肃省| 扎鲁特旗| 祁东县| 札达县| 犍为县| 昌平区| 凤阳县|