最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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清理表空間的評論 (共 條)

分享到微博請遵守國家法律
龙泉市| 康马县| 鸡西市| 义乌市| 云安县| 广河县| 来安县| 平原县| 邻水| 仁布县| 郑州市| 防城港市| 佛冈县| 察哈| 夹江县| 乐至县| 濮阳县| 西和县| 凤山市| 隆回县| 漯河市| 邛崃市| 凌云县| 金乡县| 山丹县| 纳雍县| 花垣县| 靖江市| 射阳县| 赣榆县| 常熟市| 桓台县| 墨竹工卡县| 卢龙县| 桐乡市| 龙海市| 南京市| 泗洪县| 铁岭市| 钟山县| 新宾|