gpt4 book ai didi

数据库:是否有供应商支持列级锁定?

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

我正在研究数据库机制,发现有两种机制:表级锁定行级锁定。我没有看到 column level locking,当我用谷歌搜索时,除了这个链接,我没有看到任何文件说明这个:database locking .在这个链接中:

A column level lock just means that some columns within a given row in a given table are locked. This form of locking is not commonly used because it requires a lot of resources to enable and release locks at this level. Also, there is very little support for column level locking in most database vendors.

那么,哪些供应商支持列级锁定?你能告诉我更多细节吗,为什么 column level lockingrow level locking 需要更多的资源。

谢谢:)

最佳答案

锁本身不能要求任何东西。它是作用于抽象名词的抽象动词。为什么锁定一个列比锁定一个字节、一个文件或一扇门的成本更高?所以我不会在你的链接中放很多东西。

您的问题的答案在于锁为何存在——它们保护什么——以及 DBMS 是如何设计的。

DBMS 的主要工作之一是管理并发性:尽可能为每个用户提供所有数据始终属于每个用户的错觉。不同的各方正在更改数据库,而 DBMS 确保这些更改以事务的形式出现在所有用户面前,这意味着没有人会看到“部分更改”,也没有人的更改会“踩到”另一个人的更改。你和我都可以改变同一件事,但不能同时改变:DBMS 确保我们中的一个先行,然后可以显示那是谁。 DBMS 使用锁来保护正在更改的数据,或者防止在查看数据时更改它们。

请注意,当我们“想要更改同一事物”时,事物 是一行(或多行)。行代表现实世界中的事物,我们正在计数和跟踪的事物。列是那些东西的属性。

大多数 DBMS 在内部围绕数据行进行组织。数据在内存页和磁盘 block 中,逐行。这些系统中的锁保护内存中面向行的数据结构。锁定单个行是昂贵的;有很多行。作为权宜之计,许多系统锁定行(页)集或整个表。更高级的人精心设计了“锁升级”来控制锁的数量。

有一些 DBMS 是围绕列组织的。那是一个设计选择;它使插入更加昂贵,因为一行出现在多个物理位置(1/列),而不是整齐地坐落在其他行之间。但权衡是单个列的汇总在 I/O 方面更便宜。在这样的系统中,可能存在“列锁”,并且没有理由认为它们会特别昂贵。但是请注意,对于插入,它们会以与表锁完全相同的方式影响并发性:您不能将行插入列被锁定的表中。 (也有一些方法可以解决这个问题。DBMS 很复杂,这是有原因的。)

所以您的问题的答案是大多数 DBMS 没有“列”作为锁可以保护的内部结构。在那些这样做的人中,列锁将是一个特殊项目,允许一定程度的列并发,否则基本上是表锁。

关于数据库:是否有供应商支持列级锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29395757/

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