J'ai une bonne quantité de stockage dans pg_toast
relation | size
----------------------------------+---------
pg_toast.pg_toast_43934449 | 87 GB
pg_toast.pg_toast_43934438 | 64 GB
pg_toast.pg_toast_50877 | 35 GB
pg_toast.pg_toast_16715 | 15 GB
pg_toast.pg_toast_16813 | 13 GB
pg_toast.pg_toast_5706469 | 1335 MB
pg_toast.pg_toast_43934449_index | 1004 MB
pg_toast.pg_toast_43934438_index | 942 MB
pg_toast.pg_toast_16715_index | 709 MB
pg_toast.pg_toast_16813_index | 548 MB
pg_toast.pg_toast_50877_index | 530 MB
pg_toast.pg_toast_3518414 | 463 MB
pg_toast.pg_toast_16994 | 339 MB
pg_toast.pg_toast_46608 | 310 MB
pg_toast.pg_toast_16994_index | 92 MB
pg_toast.pg_toast_22345124 | 68 MB
pg_toast.pg_toast_46608_index | 51 MB
pg_toast.pg_toast_437018 | 43 MB
pg_toast.pg_toast_5706469_index | 15 MB
pg_toast.pg_toast_3518414_index | 13 MB
(20 rows)
Ce qui est important lorsque la taille totale de la DB est actuellement d'environ 420 Go. Ceci est totalement attendu car certaines de mes tables stockent JSON comme étant text
type (pour certaines de mes tables plus anciennes) ou jsonb
pour certains des plus récents.
Beaucoup de ces colonnes peuvent être nettoyées au niveau de l'application en supprimant simplement des données plus anciennes. Le problème est qu'il est difficile de savoir ce qui contribue réellement aux tables pg_toast?
Comment puis-je revers-trace A PG_Toast à la référence de la ligne/colonne réelle d'une autre table?
Vous pouvez utiliser cette requête pour trouver toutes les tables avec des tables de toast:
SELECT oid::regclass,
reltoastrelid::regclass,
pg_relation_size(reltoastrelid) AS toast_size
FROM pg_class
WHERE relkind = 'r'
AND reltoastrelid <> 0
ORDER BY 3 DESC;
Pour savoir laquelle des colonnes du tableau consomme la plupart des espaces, vous pouvez essayer une requête comme
SELECT sum(length(col1)) AS col1_size,
sum(length(col2)) AS col2_site
FROM some_table;
Ici col1
et col2
serait text
, varchar
, char
ou bytea
colonnes, qui sont généralement les plus grandes. Avec d'autres types de données tels que jsonb
, vous pourriez lancer à text
pour obtenir une estimation.