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
终于找到相关的了…我是没用docker,直接在vps上部署的程序,也设置了定时清理,但为啥就是体现不出来有删除的动作呢?数据库打标记是查的哪个表啊
我记得我当时也是猜测。设置定时清理应该就是删了,当时搜好像是用的这个数据库就是这个特性,删除空间不释放或者有释放空间删除的方法但是软件没使用