我有一个在 CI 管道中运行的 OracleDB 数据库。每次测试运行时都会对其进行设置和拆卸;而且速度太慢了。
由于我不关心完整性,是否可以在不刷新到磁盘的情况下运行 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 实例永远不会是小型、轻量级的进程。最接近的是 Multi-Tenancy 选项,它可以快速创建可插入数据库。但该选项需要设置一个中央容器数据库,这可能是您首先要避免的。
您能否提供有关 CI 管道的更多信息?可能有一些特定于您的环境的优化。例如,我认为 Oracle 有一些代码支持 Docker(尽管我不熟悉这些选项)。
关于oracle - OracleDB 中 Postgres 的 fsync 设置相当于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66187820/