如果在查询运行时数据发生更改,SQL SELECT 查询会发生什么情况

时间:2021-02-01 22:05:35

标签: sql oracle

我们有一个定期写入的大型数据库。我们在这个数据库上有一个 SELECT 查询,它需要几分钟才能运行。如果我们运行这个查询并且在这几分钟内插入/更新了新的数据,这些更改是否会被查询获取(假设它与查询的参数匹配)?还是会返回运行时的结果?

2 个答案:

答案 0 :(得分:3)

您正在使用 Oracle:在执行查询时,您将读取特定时间点的数据以保证一致性。默认情况下,这将是执行开始的时间。

在数据库概念指南 https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/introduction-to-oracle-database.html#GUID-4D3C43F5-4EC6-4A21-9E91-8E4F33FE7790 中阅读它。 Oracle 如何实现这一点是其区别于大多数其他 RDBMS 的特性之一。

答案 1 :(得分:-1)

每个查询——无论底层数据库是什么——都在 TRANSACTION 内运行,无论是显式的还是隐式的。而且,每笔交易都有一个特定的 "isolation level."

最好的策略是明确BEGIN TRANSACTION,但实际情况是您需要让自己了解您选择的数据库接口在幕后做了什么。这会给你答案。 “当您运行查询时”,您的软件会执行某些操作。

相关问题