gpt4 book ai didi

mysql - UUID Primary_key 索引的插入性能

转载 作者:行者123 更新时间:2023-11-29 15:19:55 25 4
gpt4 key购买 nike

我读到,UUID 作为主键的插入性能取决于数据库中存在多少条记录。记录数量越多,插入记录所需的时间就越长

https://kccoder.com/mysql/uuid-vs-int-insert-performance/

上述文章的作者进行了实验,他认为这是因为UUID Primary_key insert 的读取次数比其他自增整数要多。

我想问数据库是否自动为所选的primary_key创建索引如果UUID Primary_key索引是问题所在,那么通过使用整数作为primary_key索引,同时仍然保留UUID字段,然后将主键切换为UUID,是否可以解决插入问题,那么问题是外键引用整数ID切换时传播到 UUID 字段?

最佳答案

whether databases automatically create an index for the the chosen primary_key

是的。主键始终被索引。在某些数据库中,索引是聚集索引(意味着数据页上的数据实际上是按键排序的)。在其他数据库中,索引是为了强制执行唯一性约束。

UUID 和索引的问题是新值不一定大于旧值。这意味着插入通常是在两个现有记录“之间”进行的。当这种情况发生时,就会出现碎片——也就是说,现有的数据页需要为新记录腾出空间,有时甚至分成两页。

自动递增整数不存在此问题。它被索引(并在 MySQL 中聚集)。然而,新值比任何现有值都大——这就是自动递增的定义。因此,新的值放在最后。仅当删除行或手动设置值时,碎片才会成为问题。

我建议您使用自动递增主键,除非您有特定的 UUID 原因。

关于mysql - UUID Primary_key 索引的插入性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59440191/

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