gpt4 book ai didi

database - 自动增量如何在数据库内部工作?

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

我了解如何使用 auto_increment,但它在内部是如何工作的?我想到了不同场景中的几个问题:

  1. 对于单节点数据库,它是否使用互斥锁来锁定整个表,同时递增计数器并将值分配给行,以防止竞争条件?这样做不会有性能问题吗?如果不是,它如何保证在多个请求同时进来时生成一个唯一的id?

  2. 对于复制的、主-主或主-从的数据库,将整个数据库表锁定在所有副本上以获得自动增量 ID 是没有意义的,对吗?

  3. 对于分布式数据库(例如 Cassandra),真的不可能具有自动增量功能,对吗?因为数据库独立工作以实现快速写入。

你将如何设计一个支持 auto_increment 的分布式系统?

最佳答案

对于 MS SQL Server,服务器在内存中缓存了一些 IDENTITY 值,这些值在插入记录时会被消耗(参见 TechNet article )。

在复制场景中,MS SQL Server 要求 GUID 用作主键,因此这里没有自动递增。不过,您仍然可以将 SEQUENCE 用于(额外的)自动递增。

请注意,IDENTITY(即自动递增)和SEQUENCE 都不能保证连续的数字。

关于database - 自动增量如何在数据库内部工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35528849/

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