什么相当于 OracleDB 中 Postgres 的 fsync 设置?

What's the equivalent to Postgres's fsync setting in OracleDB?

我在 CI 管道中有一个 OracleDB 数据库 运行ning。它在每次测试中都得到设置和拆除 运行;而且速度太慢了。

由于我不关心完整性,是否可以 运行 OracleDB 不刷新到磁盘?很像 Postgres 的 fsync 设置?

我相信 COMMIT_WAIT Oracle 参数类似于 PostgreSQL 的 fsync 设置。在 运行 以下命令之后,Oracle 将不会等待提交刷新到磁盘:

alter system set commit_wait = nowait;

但根据我对该参数的有限经验,它不会显着提高性能,除非您的系统进行了大量的提交。也许您还应该考虑使用 NOARCHIVELOG 模式。 Oracle 仍会将事务数据写入磁盘,但它至少会停止制作额外的副本:

SQL> shutdown  immediate;
SQL> startup mount
SQL> alter database noarchivelog;
SQL> alter database open;

但即使是这些设置也可能不会显着改善管理任务时间。 Oracle 实例永远不会是小型、轻量级的进程。最接近的是多租户选项,它可以快速创建可插入数据库。但是该选项需要设置一个中央容器数据库,这可能是您首先要避免的。

能否提供有关 CI 管道的更多信息?可能有一些特定于您的环境的优化。例如,我认为 Oracle 有一些代码支持 Docker(尽管我不熟悉那些选项)。