gpt4 book ai didi

Oracle索引-全表扫描/锁定

转载 作者:行者123 更新时间:2023-12-02 21:49:08 31 4
gpt4 key购买 nike

找到这个here :

一般来说,在以下任何情况下,请考虑在列上创建索引:

  • 索引列上存在引用完整性约束,或者列。索引是避免全表锁的一种方法,否则,如果您更新父表主键,则需要,合并到父表中,或从父表中删除。

我不明白为什么在这种情况下会发生全表锁。我本以为如果我尝试删除/更新父表中的主键,则会在子表上执行全表扫描。

锁从哪里来?

最佳答案

看看这个 Tom Kyte博客条目。在其中,他指的是Oracle documentation ,其中提供了以下解释:

  • 防止子表上的全表锁定。相反,数据库会获取索引上的行锁。
  • 无需对子表进行全表扫描。作为说明,假设用户从部门表中删除了部门 10 的记录。如果employees.department_id未建立索引,则数据库必须扫描员工以查看部门10中是否存在员工。

在第一种情况下,如果该列没有索引,则必须锁定整个表,因为Oracle不知道必须更新子表中的哪些行。通过索引,Oracle 可以识别有问题的行并锁定它们。如果没有全表锁,则可以修改父级并让另一个 session 将子级修改为违反约束的内容。

关于Oracle索引-全表扫描/锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19005398/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com