有没有任何方法可以模拟postgres中函数的自动提交



我知道你不能控制函数或过程中的事务,但我想知道是否有类似的或其他选择。

问题是:我有一个非常昂贵的函数,它可以把客户id之类的东西变成一个漂亮的html报告。问题是——这需要几秒钟。。。所以我在函数中加入了一些东西,基本上是查看缓存,看看是否存在预渲染的缓存,如果存在,就会返回它,如果不存在,它会在之后添加到缓存中,所以它只会渲染一次。

现在——考虑到大多数事情永远不会改变——我有点想在所有事情上都这样做——但考虑到时间——可能需要大约1年的时间才能运行——实际上这还可以——这个系统必须运行10年。问题是,我不希望它锁定数据库中的任何内容,所以我有点希望它慢慢来,一次执行1并立即提交。

我调查了pg_cron,因为这似乎是一个选项,但我使用的aurora版本不支持它。有什么想法可以在数据库中做到这一点吗?

无论如何,不要将其编码为在数据库中运行的函数。在数据库中进行计算是可以的,但生成报告和对客户进行迭代属于客户端代码。这样,提交每个报告就不是问题。

在customer表中添加一个文本列以保存html报告。

对其内容影响刷新报表列的html报表的表设置触发器。

这使您能够即时检索,并且仅在需要时(重新(计算它。


或者如果数据稳定:

create table customer_report (
customer_id int not null primary key,
report text not null
);
insert into customer_report
select id, my_report_proc(id)
from customer;

最新更新