postgresql 的 data_dir/base 中存储了什么

5 postgresql

我突然发现发现我的 PostgreSQL 空间不足。它是在 ram 磁盘上运行的 tmp 实例。允许的空间有限(约 800M)。数据实际上并没有存储在上面,所有的表都会在一些计算完成后被删除。

我检查了文件夹,在基本文件夹下发现了大量数据:

$ du -h
6.0M ./pgsql_tmp
706M ./16384
6.0M ./12780
6.0M ./12772
6.0M ./1
730M。

我的问题是:

  • 那个文件夹里面是什么?
  • 我有机会清理它吗?

Mat*_*sOl 9

此文件夹是 PostgreSQL 保存您在数据库中插入的所有数据的地方(请参阅PostgreSQL 数据库文件布局)。每个子目录由集群中的数据库使用,其中的文件是关系的实际数据(表、索引、序列等)。

所以,你的答案是否定的!您无法清除它,如果您这样做,您将丢失数据并且 PostgreSQL 服务器将因恐慌而停止。

基本上,只能pg_log删除目录中的文件(如果有)。旁注,永远不要删除里面的文件pg_xlog,正如名字所暗示的那样,它并不是无用的(你没有要求它,但我看到有时会发生)。

解决问题的提示:

在你的情况下,你可以做一些事情来使用更少的空间,比如:

  1. 为某些表或数据库使用另一个(不在 RAM 中)表空间
  2. 运行一个VACUUM FULL. 但是请注意,您将需要一些临时空间来执行此操作,因此当您真的没有空间时不能这样做;
  3. 移动pg_xlog到另一个位置;
  4. 正如你所说的它是一个临时数据库,尝试删除一些未使用的索引。