gpt4 book ai didi

sql - 锁定数据库

转载 作者:搜寻专家 更新时间:2023-10-30 20:12:46 24 4
gpt4 key购买 nike

您好,我正在尝试查看是什么锁定了数据库并找到了两种类型的锁定。乐观和悲观锁定。我在 Wiki 上找到了一些文章,但我想了解更多!有人可以向我解释一下那些锁定吗?我们应该只在需要独占访问某些东西时才使用锁定吗?锁定仅在我们使用事务时发生?提前致谢。

凯文

最佳答案

乐观锁根本就不是锁。

它的工作原理是在您开始进行更改之前记录系统所处的状态,然后继续进行这些更改,并假设(乐观地)没有其他人愿意进行有冲突的更新。正如您即将自动提交这些更改一样,您将检查是否其他人同时也更新了相同的数据。在这种情况下,您的提交将失败。

Subversion 例如使用乐观锁定。当您尝试提交时,您必须处理任何冲突,但在此之前,您可以在您的工作副本上做任何您想做的事情。

悲观锁与真实锁一起工作。假设会有争用,您可以在触摸之前锁定要更新的所有内容。其他人都必须等待您提交或回滚。

当使用具有事务支持的关系数据库时,数据库通常会在内部负责锁定(例如当您发出 UPDATE 语句时),因此对于正常的在线处理,您不需要自己处理。仅当您想进行维护工作或进行大批量处理时,您有时才需要锁定表。

We should only use locking when we need exclusive access to something?

您需要它来防止与其他 session 的操作发生冲突。通常,这意味着更新。读取数据通常可以并发进行。

Locking only happens when we use transaction?

是的。您将在处理事务时累积锁,并在事务结束时释放所有锁。请注意,自动提交模式下的单个 SQL 命令本身仍然是一个事务。

关于sql - 锁定数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5255159/

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