假设一个包含数亿条记录和列的巨大表格已被很好地编入索引。
之间是否有任何性能问题SELECT * from HUGE_TABLE where ... AND ... FOR UPDATE
和
SELECT * from HUGE_TABLE where ... AND ...
FOR UPDATE
子句的主要原因是因为我们可能有多个应用程序实例同时运行相同的查询,但需要避免更新冲突。
此时我担心两个性能问题:1。如果没有其他查询在运行,select for update
会慢吗? 2.如果巨大的表上有select / update
的许多其他活动查询,那么这个表上的整个情况会有什么表现(也会在问题中更新)
答案 0 :(得分:0)
SELECT ... FOR UPDATE
相比, SELECT
至少会产生两个性能问题:
FOR UPDATE
通过对每个相关块进行小更新来工作。它在某些方面类似于常规更改,并且会通过运行select used_urec from gv$transaction;
之类的查询来创建重做和撤消记录。根据锁定的行数,这可能比常规SELECT
贵得多,即使不涉及其他会话。