Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL:自动删除旧分区_Postgresql - Fatal编程技术网

PostgreSQL:自动删除旧分区

PostgreSQL:自动删除旧分区,postgresql,Postgresql,我正在使用Imperial Wicket的精细自动分区功能(用于PostgreSQL)创建每周分区来存储大量数据。数据库每周增长约100GB,因此需要经常注意确保服务器不会耗尽磁盘空间 我已经搜索过了,但找不到任何基于磁盘空间阈值或时间段自动删除表的解决方案。是否有任何本机PostgreSQL解决方案或开发的函数可以自动删除旧分区,或者这是一个roll my own solution类型的问题?这似乎是一个roll my own solution类型的问题。由于我使用的是Imperial Wic

我正在使用Imperial Wicket的精细自动分区功能(用于PostgreSQL)创建每周分区来存储大量数据。数据库每周增长约100GB,因此需要经常注意确保服务器不会耗尽磁盘空间


我已经搜索过了,但找不到任何基于磁盘空间阈值或时间段自动删除表的解决方案。是否有任何本机PostgreSQL解决方案或开发的函数可以自动删除旧分区,或者这是一个roll my own solution类型的问题?

这似乎是一个roll my own solution类型的问题。由于我使用的是Imperial Wicket的自动表分区函数,因此我将其用作开发新函数的基础,该函数可以删除比指定日期更早的分区表

该守则可于

用法类似于Imperial Wicket的语法,支持日/周/月/年分区方案。例如,要删除使用每周分区创建的名为“my_table_name”的表分区,这些分区比180天前的一周早,请执行SQL语句:

SELECT public.drop_partitions(current_date-180, 'public', 'my_table_name', 5, 'week');

由于您是按日期范围进行分区的,所以您可能需要查看pg_partman。它将能够半自动地满足您的需要,并具有许多用于分区管理的内置功能。