Tiny Tiny RSS自带了清理旧文章的功能,在偏好设置中,可以设置清理多久前的文章。但与他连接的postgresql数据库对内容的删除是打标记,而不是彻底删除。这样就造成运行越久数据库越大的问题。因此我们需要清理postgresql数据库。
就比如我的服务,运行了3年多了,数据库已经到850MB了,而收藏的文章就20篇,90天一清理旧文章,现有2000多文章。是比较离谱了。因此我们通过操作数据库来进行清理。
大部分的ttrss应该都是使用docker-compose安装的,因此postgresql应该也是docker容器。也是本文的基础。
查询数据库大小
先查询所有数据库的大小:
#先进入容器的sql命令模式(我的容器名是postgres即第一个"postgres"):
docker exec -it postgres psql -U postgres
select datname, pg_size_pretty (pg_database_size(datname)) AS size from pg_database;
###
datname | size
-----------+---------
postgres | 8001 kB
template0 | 7809 kB
template1 | 7953 kB
ttrss | 858 MB
(4 rows)
确定占用空间多的数据库名称后退出sql命令模式:输入”\q”
清理对应数据库
进入postgre容器的bash命令行:
docker exec -it postgres /bin/bash
vacuumdb -U postgres -d ttrss -v -f --analyze
看过一堆信息输出后我们在进去sql中查看一下:
#当前在docker的bash命令行中进行操作:
psql -U postgres
select datname, pg_size_pretty (pg_database_size(datname)) AS size from pg_database;
-----------+---------
postgres | 7017 kB
template0 | 7809 kB
template1 | 7953 kB
ttrss | 17 MB
(4 rows)
清理过后占用17MB,真的离谱。
参考文章
https://www.cnblogs.com/tiandi/p/16585681.html