Thread: BUG #17382: When vacuum full or vacuumdb - F is executed, a large number of empty files will be generated in the
BUG #17382: When vacuum full or vacuumdb - F is executed, a large number of empty files will be generated in the
From
PG Bug reporting form
Date:
The following bug has been logged on the website: Bug reference: 17382 Logged by: 强 魏 Email address: 1726002692@qq.com PostgreSQL version: 14.1 Operating system: CentOS 7.6 Description: When vacuum full or vacuumdb - F is executed, a large number of empty files will be generated in the database. These files have never been deleted. Each execution of vacuum full or vacuudb - F will produce a large number of empty files.These empty files will not be deleted until the database is restarted. Is this a bug? The following is the verification: user:postgres@db:postgres[[local]:5432]#\c postgres user:postgres@db:postgres[[local]:5432]#vacuum full; [postgres@PG-3 99522]$cd $PGDATA [postgres@PG-3 99522]$ll | less 总用量 13096 -rw------- 1 postgres postgres 0 1月 26 16:13 100705 -rw------- 1 postgres postgres 0 1月 26 16:13 100708 -rw------- 1 postgres postgres 0 1月 26 16:17 100709 -rw------- 1 postgres postgres 0 1月 26 16:17 100710 -rw------- 1 postgres postgres 0 1月 26 16:17 100711 -rw------- 1 postgres postgres 0 1月 26 16:17 100714 -rw------- 1 postgres postgres 0 1月 26 16:17 100715 -rw------- 1 postgres postgres 0 1月 26 16:17 100716 -rw------- 1 postgres postgres 0 1月 26 16:17 100717 -rw------- 1 postgres postgres 0 1月 26 16:13 100720 -rw------- 1 postgres postgres 0 1月 26 16:17 100721 -rw------- 1 postgres postgres 0 1月 26 16:17 100722 -rw------- 1 postgres postgres 0 1月 26 16:17 100723 -rw------- 1 postgres postgres 0 1月 26 16:17 100724 -rw------- 1 postgres postgres 0 1月 26 16:17 100727 -rw------- 1 postgres postgres 0 1月 26 16:17 100728 -rw------- 1 postgres postgres 0 1月 26 16:17 100729 -rw------- 1 postgres postgres 0 1月 26 16:17 100730 -rw------- 1 postgres postgres 0 1月 26 16:17 100731 -rw------- 1 postgres postgres 0 1月 26 16:13 100734 -rw------- 1 postgres postgres 0 1月 26 16:17 100735 -rw------- 1 postgres postgres 0 1月 26 16:17 100736 -rw------- 1 postgres postgres 0 1月 26 16:17 100737 -rw------- 1 postgres postgres 0 1月 26 16:17 100740 -rw------- 1 postgres postgres 0 1月 26 16:17 100741 -rw------- 1 postgres postgres 0 1月 26 16:17 100742 -rw------- 1 postgres postgres 0 1月 26 16:17 100745 -rw------- 1 postgres postgres 0 1月 26 16:17 100746 -rw------- 1 postgres postgres 0 1月 26 16:17 100747 -rw------- 1 postgres postgres 0 1月 26 16:17 100750 -rw------- 1 postgres postgres 0 1月 26 16:17 100751 -rw------- 1 postgres postgres 0 1月 26 16:17 100752 -rw------- 1 postgres postgres 0 1月 26 16:17 100753 -rw------- 1 postgres postgres 0 1月 26 16:13 100756 -rw------- 1 postgres postgres 0 1月 26 16:17 100757 -rw------- 1 postgres postgres 0 1月 26 16:17 100758 -rw------- 1 postgres postgres 0 1月 26 16:17 100759 -rw------- 1 postgres postgres 0 1月 26 16:17 100767 -rw------- 1 postgres postgres 0 1月 26 16:13 100770 -rw------- 1 postgres postgres 0 1月 26 16:17 100771 -rw------- 1 postgres postgres 0 1月 26 16:17 100772 -rw------- 1 postgres postgres 0 1月 26 16:17 100773 -rw------- 1 postgres postgres 0 1月 26 16:17 100774 -rw------- 1 postgres postgres 0 1月 26 16:17 100775 -rw------- 1 postgres postgres 0 1月 26 16:17 100776 -rw------- 1 postgres postgres 0 1月 26 16:17 100777 -rw------- 1 postgres postgres 0 1月 26 16:17 100780 -rw------- 1 postgres postgres 0 1月 26 16:17 100781 -rw------- 1 postgres postgres 0 1月 26 16:17 100782 -rw------- 1 postgres postgres 0 1月 26 16:17 100785 -rw------- 1 postgres postgres 0 1月 26 16:17 100786 -rw------- 1 postgres postgres 0 1月 26 16:17 100787 -rw------- 1 postgres postgres 0 1月 26 16:17 100790 -rw------- 1 postgres postgres 0 1月 26 16:17 100791 -rw------- 1 postgres postgres 0 1月 26 16:17 100792 -rw------- 1 postgres postgres 0 1月 26 16:17 100795 -rw------- 1 postgres postgres 0 1月 26 16:17 100796 -rw------- 1 postgres postgres 0 1月 26 16:17 100797 -rw------- 1 postgres postgres 0 1月 26 16:13 100800 -rw------- 1 postgres postgres 0 1月 26 16:17 100801 -rw------- 1 postgres postgres 0 1月 26 16:17 100802 -rw------- 1 postgres postgres 0 1月 26 16:17 100803 [postgres@PG-3 99522]$ ll | wc -l 445 [postgres@PG-3 99522]$ pg_ctl restart waiting for server to shut down.... done server stopped waiting for server to start....2022-01-26 16:18:54 CST[13684]:[1-1]user = ,db = ,app = ,client = LOG: redirecting log output to logging collector process 2022-01-26 16:18:54 CST[13684]:[2-1]user = ,db = ,app = ,client = HINT: Future log output will appear in directory "log". done server started [postgres@PG-3 99522]$ ll | wc -l 229
回复:BUG #17382: When vacuum full or vacuumdb - F is executed, a large number of empty files will be generated in the
From
"两个孩子的爹"
Date:
When vacuum full or vacuumdb -f is executed, a large number of empty files
will be generated in the database. These files have never been deleted.
Each execution of vacuum full or vacuudb -f will produce a large number of
empty files.These empty files will not be deleted until the database is
restarted.
Is this a bug?
The following is the verification:
user:postgres@db:postgres[[local]:5432]#\c postgres
user:postgres@db:postgres[[local]:5432]#vacuum full;
[postgres@PG-3 99522]$cd $PGDATA
[postgres@PG-3 99522]$ll | less
总用量 13096
-rw------- 1 postgres postgres 0 1月 26 16:13 100705
-rw------- 1 postgres postgres 0 1月 26 16:13 100708
-rw------- 1 postgres postgres 0 1月 26 16:17 100709
-rw------- 1 postgres postgres 0 1月 26 16:17 100710
-rw------- 1 postgres postgres 0 1月 26 16:17 100711
-rw------- 1 postgres postgres 0 1月 26 16:17 100714
-rw------- 1 postgres postgres 0 1月 26 16:17 100715
-rw------- 1 postgres postgres 0 1月 26 16:17 100716
-rw------- 1 postgres postgres 0 1月 26 16:17 100717
-rw------- 1 postgres postgres 0 1月 26 16:13 100720
-rw------- 1 postgres postgres 0 1月 26 16:17 100721
-rw------- 1 postgres postgres 0 1月 26 16:17 100722
-rw------- 1 postgres postgres 0 1月 26 16:17 100723
-rw------- 1 postgres postgres 0 1月 26 16:17 100724
-rw------- 1 postgres postgres 0 1月 26 16:17 100727
-rw------- 1 postgres postgres 0 1月 26 16:17 100728
-rw------- 1 postgres postgres 0 1月 26 16:17 100729
-rw------- 1 postgres postgres 0 1月 26 16:17 100730
-rw------- 1 postgres postgres 0 1月 26 16:17 100731
-rw------- 1 postgres postgres 0 1月 26 16:13 100734
-rw------- 1 postgres postgres 0 1月 26 16:17 100735
-rw------- 1 postgres postgres 0 1月 26 16:17 100736
-rw------- 1 postgres postgres 0 1月 26 16:17 100737
-rw------- 1 postgres postgres 0 1月 26 16:17 100740
-rw------- 1 postgres postgres 0 1月 26 16:17 100741
-rw------- 1 postgres postgres 0 1月 26 16:17 100742
-rw------- 1 postgres postgres 0 1月 26 16:17 100745
-rw------- 1 postgres postgres 0 1月 26 16:17 100746
-rw------- 1 postgres postgres 0 1月 26 16:17 100747
-rw------- 1 postgres postgres 0 1月 26 16:17 100750
-rw------- 1 postgres postgres 0 1月 26 16:17 100751
-rw------- 1 postgres postgres 0 1月 26 16:17 100752
-rw------- 1 postgres postgres 0 1月 26 16:17 100753
-rw------- 1 postgres postgres 0 1月 26 16:13 100756
-rw------- 1 postgres postgres 0 1月 26 16:17 100757
-rw------- 1 postgres postgres 0 1月 26 16:17 100758
-rw------- 1 postgres postgres 0 1月 26 16:17 100759
-rw------- 1 postgres postgres 0 1月 26 16:17 100767
-rw------- 1 postgres postgres 0 1月 26 16:13 100770
-rw------- 1 postgres postgres 0 1月 26 16:17 100771
-rw------- 1 postgres postgres 0 1月 26 16:17 100772
-rw------- 1 postgres postgres 0 1月 26 16:17 100773
-rw------- 1 postgres postgres 0 1月 26 16:17 100774
-rw------- 1 postgres postgres 0 1月 26 16:17 100775
-rw------- 1 postgres postgres 0 1月 26 16:17 100776
-rw------- 1 postgres postgres 0 1月 26 16:17 100777
-rw------- 1 postgres postgres 0 1月 26 16:17 100780
-rw------- 1 postgres postgres 0 1月 26 16:17 100781
-rw------- 1 postgres postgres 0 1月 26 16:17 100782
-rw------- 1 postgres postgres 0 1月 26 16:17 100785
-rw------- 1 postgres postgres 0 1月 26 16:17 100786
-rw------- 1 postgres postgres 0 1月 26 16:17 100787
-rw------- 1 postgres postgres 0 1月 26 16:17 100790
-rw------- 1 postgres postgres 0 1月 26 16:17 100791
-rw------- 1 postgres postgres 0 1月 26 16:17 100792
-rw------- 1 postgres postgres 0 1月 26 16:17 100795
-rw------- 1 postgres postgres 0 1月 26 16:17 100796
-rw------- 1 postgres postgres 0 1月 26 16:17 100797
-rw------- 1 postgres postgres 0 1月 26 16:13 100800
-rw------- 1 postgres postgres 0 1月 26 16:17 100801
-rw------- 1 postgres postgres 0 1月 26 16:17 100802
-rw------- 1 postgres postgres 0 1月 26 16:17 100803
[postgres@PG-3 99522]$ ll | wc -l
445
[postgres@PG-3 99522]$ pg_ctl restart
waiting for server to shut down.... done
server stopped
waiting for server to start....2022-01-26 16:18:54 CST[13684]:[1-1]user =
,db = ,app = ,client = LOG: redirecting log output to logging collector
process
2022-01-26 16:18:54 CST[13684]:[2-1]user = ,db = ,app = ,client = HINT:
Future log output will appear in directory "log".
done
server started
[postgres@PG-3 99522]$ ll | wc -l
229
will be generated in the database. These files have never been deleted.
Each execution of vacuum full or vacuudb -f will produce a large number of
empty files.These empty files will not be deleted until the database is
restarted.
Is this a bug?
The following is the verification:
user:postgres@db:postgres[[local]:5432]#\c postgres
user:postgres@db:postgres[[local]:5432]#vacuum full;
[postgres@PG-3 99522]$cd $PGDATA
[postgres@PG-3 99522]$ll | less
总用量 13096
-rw------- 1 postgres postgres 0 1月 26 16:13 100705
-rw------- 1 postgres postgres 0 1月 26 16:13 100708
-rw------- 1 postgres postgres 0 1月 26 16:17 100709
-rw------- 1 postgres postgres 0 1月 26 16:17 100710
-rw------- 1 postgres postgres 0 1月 26 16:17 100711
-rw------- 1 postgres postgres 0 1月 26 16:17 100714
-rw------- 1 postgres postgres 0 1月 26 16:17 100715
-rw------- 1 postgres postgres 0 1月 26 16:17 100716
-rw------- 1 postgres postgres 0 1月 26 16:17 100717
-rw------- 1 postgres postgres 0 1月 26 16:13 100720
-rw------- 1 postgres postgres 0 1月 26 16:17 100721
-rw------- 1 postgres postgres 0 1月 26 16:17 100722
-rw------- 1 postgres postgres 0 1月 26 16:17 100723
-rw------- 1 postgres postgres 0 1月 26 16:17 100724
-rw------- 1 postgres postgres 0 1月 26 16:17 100727
-rw------- 1 postgres postgres 0 1月 26 16:17 100728
-rw------- 1 postgres postgres 0 1月 26 16:17 100729
-rw------- 1 postgres postgres 0 1月 26 16:17 100730
-rw------- 1 postgres postgres 0 1月 26 16:17 100731
-rw------- 1 postgres postgres 0 1月 26 16:13 100734
-rw------- 1 postgres postgres 0 1月 26 16:17 100735
-rw------- 1 postgres postgres 0 1月 26 16:17 100736
-rw------- 1 postgres postgres 0 1月 26 16:17 100737
-rw------- 1 postgres postgres 0 1月 26 16:17 100740
-rw------- 1 postgres postgres 0 1月 26 16:17 100741
-rw------- 1 postgres postgres 0 1月 26 16:17 100742
-rw------- 1 postgres postgres 0 1月 26 16:17 100745
-rw------- 1 postgres postgres 0 1月 26 16:17 100746
-rw------- 1 postgres postgres 0 1月 26 16:17 100747
-rw------- 1 postgres postgres 0 1月 26 16:17 100750
-rw------- 1 postgres postgres 0 1月 26 16:17 100751
-rw------- 1 postgres postgres 0 1月 26 16:17 100752
-rw------- 1 postgres postgres 0 1月 26 16:17 100753
-rw------- 1 postgres postgres 0 1月 26 16:13 100756
-rw------- 1 postgres postgres 0 1月 26 16:17 100757
-rw------- 1 postgres postgres 0 1月 26 16:17 100758
-rw------- 1 postgres postgres 0 1月 26 16:17 100759
-rw------- 1 postgres postgres 0 1月 26 16:17 100767
-rw------- 1 postgres postgres 0 1月 26 16:13 100770
-rw------- 1 postgres postgres 0 1月 26 16:17 100771
-rw------- 1 postgres postgres 0 1月 26 16:17 100772
-rw------- 1 postgres postgres 0 1月 26 16:17 100773
-rw------- 1 postgres postgres 0 1月 26 16:17 100774
-rw------- 1 postgres postgres 0 1月 26 16:17 100775
-rw------- 1 postgres postgres 0 1月 26 16:17 100776
-rw------- 1 postgres postgres 0 1月 26 16:17 100777
-rw------- 1 postgres postgres 0 1月 26 16:17 100780
-rw------- 1 postgres postgres 0 1月 26 16:17 100781
-rw------- 1 postgres postgres 0 1月 26 16:17 100782
-rw------- 1 postgres postgres 0 1月 26 16:17 100785
-rw------- 1 postgres postgres 0 1月 26 16:17 100786
-rw------- 1 postgres postgres 0 1月 26 16:17 100787
-rw------- 1 postgres postgres 0 1月 26 16:17 100790
-rw------- 1 postgres postgres 0 1月 26 16:17 100791
-rw------- 1 postgres postgres 0 1月 26 16:17 100792
-rw------- 1 postgres postgres 0 1月 26 16:17 100795
-rw------- 1 postgres postgres 0 1月 26 16:17 100796
-rw------- 1 postgres postgres 0 1月 26 16:17 100797
-rw------- 1 postgres postgres 0 1月 26 16:13 100800
-rw------- 1 postgres postgres 0 1月 26 16:17 100801
-rw------- 1 postgres postgres 0 1月 26 16:17 100802
-rw------- 1 postgres postgres 0 1月 26 16:17 100803
[postgres@PG-3 99522]$ ll | wc -l
445
[postgres@PG-3 99522]$ pg_ctl restart
waiting for server to shut down.... done
server stopped
waiting for server to start....2022-01-26 16:18:54 CST[13684]:[1-1]user =
,db = ,app = ,client = LOG: redirecting log output to logging collector
process
2022-01-26 16:18:54 CST[13684]:[2-1]user = ,db = ,app = ,client = HINT:
Future log output will appear in directory "log".
done
server started
[postgres@PG-3 99522]$ ll | wc -l
229
------------------ 原始邮件 ------------------
发件人: "1726002692" <noreply@postgresql.org>;
发送时间: 2022年1月26日(星期三) 下午4:25
收件人: "pgsql-bugs"<pgsql-bugs@lists.postgresql.org>;
抄送: "两个孩子的爹"<1726002692@qq.com>;
主题: BUG #17382: When vacuum full or vacuumdb - F is executed, a large number of empty files will be generated in the
Bug reference: 17382
Logged by: 强 魏
Email address: 1726002692@qq.com
PostgreSQL version: 14.1
Operating system: CentOS 7.6
Description:
When vacuum full or vacuumdb - F is executed, a large number of empty files
will be generated in the database. These files have never been deleted.
Each execution of vacuum full or vacuudb - F will produce a large number of
empty files.These empty files will not be deleted until the database is
restarted.
Is this a bug?
The following is the verification:
user:postgres@db:postgres[[local]:5432]#\c postgres
user:postgres@db:postgres[[local]:5432]#vacuum full;
[postgres@PG-3 99522]$cd $PGDATA
[postgres@PG-3 99522]$ll | less
总用量 13096
-rw------- 1 postgres postgres 0 1月 26 16:13 100705
-rw------- 1 postgres postgres 0 1月 26 16:13 100708
-rw------- 1 postgres postgres 0 1月 26 16:17 100709
-rw------- 1 postgres postgres 0 1月 26 16:17 100710
-rw------- 1 postgres postgres 0 1月 26 16:17 100711
-rw------- 1 postgres postgres 0 1月 26 16:17 100714
-rw------- 1 postgres postgres 0 1月 26 16:17 100715
-rw------- 1 postgres postgres 0 1月 26 16:17 100716
-rw------- 1 postgres postgres 0 1月 26 16:17 100717
-rw------- 1 postgres postgres 0 1月 26 16:13 100720
-rw------- 1 postgres postgres 0 1月 26 16:17 100721
-rw------- 1 postgres postgres 0 1月 26 16:17 100722
-rw------- 1 postgres postgres 0 1月 26 16:17 100723
-rw------- 1 postgres postgres 0 1月 26 16:17 100724
-rw------- 1 postgres postgres 0 1月 26 16:17 100727
-rw------- 1 postgres postgres 0 1月 26 16:17 100728
-rw------- 1 postgres postgres 0 1月 26 16:17 100729
-rw------- 1 postgres postgres 0 1月 26 16:17 100730
-rw------- 1 postgres postgres 0 1月 26 16:17 100731
-rw------- 1 postgres postgres 0 1月 26 16:13 100734
-rw------- 1 postgres postgres 0 1月 26 16:17 100735
-rw------- 1 postgres postgres 0 1月 26 16:17 100736
-rw------- 1 postgres postgres 0 1月 26 16:17 100737
-rw------- 1 postgres postgres 0 1月 26 16:17 100740
-rw------- 1 postgres postgres 0 1月 26 16:17 100741
-rw------- 1 postgres postgres 0 1月 26 16:17 100742
-rw------- 1 postgres postgres 0 1月 26 16:17 100745
-rw------- 1 postgres postgres 0 1月 26 16:17 100746
-rw------- 1 postgres postgres 0 1月 26 16:17 100747
-rw------- 1 postgres postgres 0 1月 26 16:17 100750
-rw------- 1 postgres postgres 0 1月 26 16:17 100751
-rw------- 1 postgres postgres 0 1月 26 16:17 100752
-rw------- 1 postgres postgres 0 1月 26 16:17 100753
-rw------- 1 postgres postgres 0 1月 26 16:13 100756
-rw------- 1 postgres postgres 0 1月 26 16:17 100757
-rw------- 1 postgres postgres 0 1月 26 16:17 100758
-rw------- 1 postgres postgres 0 1月 26 16:17 100759
-rw------- 1 postgres postgres 0 1月 26 16:17 100767
-rw------- 1 postgres postgres 0 1月 26 16:13 100770
-rw------- 1 postgres postgres 0 1月 26 16:17 100771
-rw------- 1 postgres postgres 0 1月 26 16:17 100772
-rw------- 1 postgres postgres 0 1月 26 16:17 100773
-rw------- 1 postgres postgres 0 1月 26 16:17 100774
-rw------- 1 postgres postgres 0 1月 26 16:17 100775
-rw------- 1 postgres postgres 0 1月 26 16:17 100776
-rw------- 1 postgres postgres 0 1月 26 16:17 100777
-rw------- 1 postgres postgres 0 1月 26 16:17 100780
-rw------- 1 postgres postgres 0 1月 26 16:17 100781
-rw------- 1 postgres postgres 0 1月 26 16:17 100782
-rw------- 1 postgres postgres 0 1月 26 16:17 100785
-rw------- 1 postgres postgres 0 1月 26 16:17 100786
-rw------- 1 postgres postgres 0 1月 26 16:17 100787
-rw------- 1 postgres postgres 0 1月 26 16:17 100790
-rw------- 1 postgres postgres 0 1月 26 16:17 100791
-rw------- 1 postgres postgres 0 1月 26 16:17 100792
-rw------- 1 postgres postgres 0 1月 26 16:17 100795
-rw------- 1 postgres postgres 0 1月 26 16:17 100796
-rw------- 1 postgres postgres 0 1月 26 16:17 100797
-rw------- 1 postgres postgres 0 1月 26 16:13 100800
-rw------- 1 postgres postgres 0 1月 26 16:17 100801
-rw------- 1 postgres postgres 0 1月 26 16:17 100802
-rw------- 1 postgres postgres 0 1月 26 16:17 100803
[postgres@PG-3 99522]$ ll | wc -l
445
[postgres@PG-3 99522]$ pg_ctl restart
waiting for server to shut down.... done
server stopped
waiting for server to start....2022-01-26 16:18:54 CST[13684]:[1-1]user =
,db = ,app = ,client = LOG: redirecting log output to logging collector
process
2022-01-26 16:18:54 CST[13684]:[2-1]user = ,db = ,app = ,client = HINT:
Future log output will appear in directory "log".
done
server started
[postgres@PG-3 99522]$ ll | wc -l
229
Re: BUG #17382: When vacuum full or vacuumdb - F is executed, a large number of empty files will be generated in the
From
Tom Lane
Date:
PG Bug reporting form <noreply@postgresql.org> writes: > When vacuum full or vacuumdb - F is executed, a large number of empty files > will be generated in the database. These files have never been deleted. > Each execution of vacuum full or vacuudb - F will produce a large number of > empty files.These empty files will not be deleted until the database is > restarted. > Is this a bug? It might be if you could tell us how to reproduce it --- I see no such behavior here. In general, PG uses numerically-named files for table contents, but they should always appear in subdirectories of $PGDATA, never in the directory's top level. So I have no idea what those are or what put them there. Perhaps you are using some unusual extension or custom C code that creates them? regards, tom lane
Re: BUG #17382: When vacuum full or vacuumdb - F is executed, a large number of empty files will be generated in the
From
"两个孩子的爹"
Date:
Sorry, it's my fault. The empty files generated by "vacuumdb - f " is located under the $pgdata / base / 99522 directory
The following is the verification:
[postgres@PG-3 ~]$ psql
Timing is on.
Border style is 2.
Null display is "NULL".
psql (14.1)
Type "help" for help.
user:postgres@db:postgres[[local]:5432]#\l
List of databases
+-----------+----------+----------+-------------+-------------+-----------------------+
| Name | Owner | Encoding | Collate | Ctype | Access privileges |
+-----------+----------+----------+-------------+-------------+-----------------------+
| postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | |
| template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +|
| | | | | | postgres=CTc/postgres |
| template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +|
| | | | | | postgres=CTc/postgres |
+-----------+----------+----------+-------------+-------------+-----------------------+
(3 rows)
user:postgres@db:postgres[[local]:5432]#select * from pg_database;
+-------+-----------+--------+----------+-------------+-------------+---------------+--------------+--------------+---------------+--------------+------------+---------------+-------------------------------------+
| oid | datname | datdba | encoding | datcollate | datctype | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | datminmxid | dattablespace | datacl |
+-------+-----------+--------+----------+-------------+-------------+---------------+--------------+--------------+---------------+--------------+------------+---------------+-------------------------------------+
| 1 | template1 | 10 | 6 | zh_CN.UTF-8 | zh_CN.UTF-8 | t | t | -1 | 14407 | 727 | 1 | 1663 | {=c/postgres,postgres=CTc/postgres} |
| 14407 | template0 | 10 | 6 | zh_CN.UTF-8 | zh_CN.UTF-8 | t | f | -1 | 14407 | 727 | 1 | 1663 | {=c/postgres,postgres=CTc/postgres} |
| 99522 | postgres | 10 | 6 | zh_CN.UTF-8 | zh_CN.UTF-8 | f | t | -1 | 14407 | 1529 | 4 | 1663 | NULL |
+-------+-----------+--------+----------+-------------+-------------+---------------+--------------+--------------+---------------+--------------+------------+---------------+-------------------------------------+
(3 rows)
Time: 0.782 ms
user:postgres@db:postgres[[local]:5432]#\! ls -l $PGDATA/base/99522 | wc -l
292
user:postgres@db:postgres[[local]:5432]#vacuum full;
VACUUM
Time: 604.148 ms
user:postgres@db:postgres[[local]:5432]#\! ls -l $PGDATA/base/99522 | wc -l
435
user:postgres@db:postgres[[local]:5432]#\q
[postgres@PG-3 ~]$ cd $PGDATA/base/99522
[postgres@PG-3 99522]$ ll | less
总用量 13160
-rw------- 1 postgres postgres 0 1月 28 21:39 101874
-rw------- 1 postgres postgres 0 1月 26 16:37 101877
-rw------- 1 postgres postgres 0 1月 28 21:39 101878
-rw------- 1 postgres postgres 0 1月 28 21:39 101879
-rw------- 1 postgres postgres 0 1月 28 21:39 101880
-rw------- 1 postgres postgres 0 1月 28 21:39 101881
-rw------- 1 postgres postgres 0 1月 28 21:39 101884
-rw------- 1 postgres postgres 0 1月 28 21:39 101885
-rw------- 1 postgres postgres 0 1月 28 21:39 101886
-rw------- 1 postgres postgres 0 1月 28 21:39 101887
-rw------- 1 postgres postgres 0 1月 28 21:39 101888
-rw------- 1 postgres postgres 0 1月 28 21:39 101891
-rw------- 1 postgres postgres 0 1月 28 21:39 101892
-rw------- 1 postgres postgres 0 1月 28 21:39 101893
-rw------- 1 postgres postgres 0 1月 28 21:39 101894
-rw------- 1 postgres postgres 0 1月 26 16:37 101897
-rw------- 1 postgres postgres 0 1月 28 21:39 101898
-rw------- 1 postgres postgres 0 1月 28 21:39 101899
-rw------- 1 postgres postgres 0 1月 28 21:39 101900
-rw------- 1 postgres postgres 0 1月 28 21:39 101901
-rw------- 1 postgres postgres 0 1月 26 16:37 101904
-rw------- 1 postgres postgres 0 1月 28 21:39 101905
-rw------- 1 postgres postgres 0 1月 28 21:39 101906
-rw------- 1 postgres postgres 0 1月 28 21:39 101907
-rw------- 1 postgres postgres 0 1月 28 21:39 101908
-rw------- 1 postgres postgres 0 1月 28 21:39 101909
-rw------- 1 postgres postgres 0 1月 28 21:39 101910
-rw------- 1 postgres postgres 0 1月 28 21:39 101911
-rw------- 1 postgres postgres 0 1月 28 21:39 101914
-rw------- 1 postgres postgres 0 1月 28 21:39 101915
-rw------- 1 postgres postgres 0 1月 28 21:39 101916
-rw------- 1 postgres postgres 0 1月 28 21:39 101919
-rw------- 1 postgres postgres 0 1月 28 21:39 101920
-rw------- 1 postgres postgres 0 1月 28 21:39 101921
-rw------- 1 postgres postgres 0 1月 28 21:39 101924
-rw------- 1 postgres postgres 0 1月 28 21:39 101925
-rw------- 1 postgres postgres 0 1月 28 21:39 101926
-rw------- 1 postgres postgres 0 1月 28 21:39 101929
-rw------- 1 postgres postgres 0 1月 28 21:39 101930
-rw------- 1 postgres postgres 0 1月 28 21:39 101931
-rw------- 1 postgres postgres 0 1月 26 16:37 101934
-rw------- 1 postgres postgres 0 1月 28 21:39 101935
-rw------- 1 postgres postgres 0 1月 28 21:39 101936
-rw------- 1 postgres postgres 0 1月 28 21:39 101937
-rw------- 1 postgres postgres 0 1月 28 21:39 101938
-rw------- 1 postgres postgres 0 1月 26 16:37 101941
-rw------- 1 postgres postgres 0 1月 28 21:39 101942
-rw------- 1 postgres postgres 0 1月 28 21:39 101943
-rw------- 1 postgres postgres 0 1月 28 21:39 101944
-rw------- 1 postgres postgres 0 1月 28 21:39 101947
-rw------- 1 postgres postgres 0 1月 28 21:39 101948
-rw------- 1 postgres postgres 0 1月 28 21:39 101949
-rw------- 1 postgres postgres 0 1月 28 21:39 101952
-rw------- 1 postgres postgres 0 1月 28 21:39 101953
-rw------- 1 postgres postgres 0 1月 28 21:39 101954
-rw------- 1 postgres postgres 0 1月 28 21:39 101985
-rw------- 1 postgres postgres 0 1月 28 21:39 101988
-rw------- 1 postgres postgres 0 1月 28 21:39 101989
-rw------- 1 postgres postgres 0 1月 28 21:39 101990
-rw------- 1 postgres postgres 0 1月 28 21:39 101993
-rw------- 1 postgres postgres 0 1月 28 21:39 101994
-rw------- 1 postgres postgres 0 1月 28 21:39 101997
[postgres@PG-3 99522]$ pg_ctl restart
waiting for server to shut down.... done
server stopped
waiting for server to start....2022-01-28 21:41:49 CST[2289]:[1-1]user = ,db = ,app = ,client = LOG: redirecting log output to logging collector process
2022-01-28 21:41:49 CST[2289]:[2-1]user = ,db = ,app = ,client = HINT: Future log output will appear in directory "log".
done
server started
[postgres@PG-3 99522]$ ll | wc -l
229
------------------ Original ------------------
From: "Tom Lane" <tgl@sss.pgh.pa.us>;
Date: Wed, Jan 26, 2022 11:29 PM
To: "两个孩子的爹"<1726002692@qq.com>;
Cc: "pgsql-bugs"<pgsql-bugs@lists.postgresql.org>;
Subject: Re: BUG #17382: When vacuum full or vacuumdb - F is executed, a large number of empty files will be generated in the
> When vacuum full or vacuumdb - F is executed, a large number of empty files
> will be generated in the database. These files have never been deleted.
> Each execution of vacuum full or vacuudb - F will produce a large number of
> empty files.These empty files will not be deleted until the database is
> restarted.
> Is this a bug?
It might be if you could tell us how to reproduce it --- I see no
such behavior here.
In general, PG uses numerically-named files for table contents,
but they should always appear in subdirectories of $PGDATA, never
in the directory's top level. So I have no idea what those are
or what put them there. Perhaps you are using some unusual
extension or custom C code that creates them?
regards, tom lane
Re: BUG #17382: When vacuum full or vacuumdb - F is executed, a large number of empty files will be generated in the
From
Tom Lane
Date:
"=?gb18030?B?wb249rqi19O1xLX5?=" <1726002692@qq.com> writes: > Sorry, it's my fault. The empty files generated by "vacuumdb - f " is located under the $pgdata / base / 99522 directory Oh, if they are under the database's subdirectory then it's not so surprising. VACUUM FULL (or, actually, any table deletion or rewrite) leaves behind an empty "tombstone" file that is just there to prevent re-use of that table number for the moment. It'll go away at the next checkpoint. regards, tom lane