PostgreSQL全局事务和还原时间点

时间:2019-04-11 07:14:58

标签: postgresql

我正在寻找某种解决方案,可以单击“打开交易”按钮,从现在开始,对数据库所做的一切都存储在内存中。完成后,我可以点击“还原”或“提交”。

我们真的很难测试。为了测试单个动作,我们必须准备大量数据,并且恢复该动作真的很难或不可能。 我要实现的是测试解决方案/操作/测试方案并在完成后返回数据库的功能。

  1. 打开交易或创建一些恢复点
  2. 进行测试(这可以通过多个http请求和数据库连接来完成)
  3. 还原恢复点

很明显,我不是在谈论与BEGIN; COMMIT;ROLLBACK;

进行的单笔交易

1 个答案:

答案 0 :(得分:1)

我们在谈论多少测试数据?我可能想到的一件事:

创建一个包含测试数据的数据库。

create database base_test
    owner = ....
    is_template = true;

然后在base_test中创建所需的任何内容。

开始测试时,请使用以下命令克隆该数据库:

create database test_db
   template = base_test
   owner = ...;

然后在test_db上运行测试。

测试完成后,您可以丢弃test_db并重新创建它。测试数据的结构或内容的任何更改都必须在base_test中完成。

克隆数据库的速度取决于大小,它实质上只是一个文件副本。但是,如果您的测试数据为几GB,则可能不可行。