不一致性:在分布式系统中,如果多个节点同时插入数据,各节点使用自增类型主键,可能会导致主键不一致。每个节点都会生成自己的自增序列,这可能导致冲突,例如两个节点都试图使用相同的自增值。 解决方案:使用全局唯一标识符(UUID)或其他分布式主键生成策略,以确保在分布式环境中生成唯一的主键。 5、总结 这种方案的优势在...
从上述两点来看,确实是使用自增 ID 值,不使用 UUID 作为主键是较好的。那为什么还要说这是误区呢?首先,自增 ID 有其自身不足:1,自增 ID 只能在当前的 MySQL 实例内保证唯一,在分布式架构中无法保证全局唯一。2,自增 ID 存在比别人猜中数据量(例如:商品量)的情况,有数据安全隐患。3,高并发的插入...
这样可以提高插入数据的性能。 节省存储空间:自增ID通常是整数,存储空间相对较小,而UUID是一个128位的唯一标识符,存储空间较大。 易于理解:自增ID是一个连续的整数,很容易理解和使用。 为什么使用UUID? UUID是一个128位的全局唯一标识符,它的优点如下: 全局唯一性:UUID是全局唯一的,几乎可以保证在整个世界范围内...
先说下uuid和 auto_increment(数据库自增主键)的优缺点吧,因为是个人理解,如有错误恳请指出: 1、自增主键 自增ID是在设计表时将id字段的值设置为自增的形式,这样当插入一行数据时无需指定id会自动根据前一字段的ID值+1进行填充。在MySQL数据库中,可通过sql语句AUTO_INCREMENT来对特定的字段启用自增赋值 使用...
综上所述,选择自增主键还是UUID作为主键取决于具体的应用场景。在单节点数据库或需要高效查询性能的场景中,建议使用自增主键;在分布式系统或需要全局唯一标识符的场景中,建议使用UUID作为主键。
2.2 使用uuid的索引内部结构 因为uuid相对顺序的自增id来说是毫无规律可言的,新行的值不一定要比之前的主键的值要大,所以innodb无法做到总是把新行插入到索引的最后,而是需要为新行寻找新的合适的位置从而来分配新的空间。这个过程需要做很多额外的操作,数据的毫无顺序会导致数据分布散乱,将会导致以下的问题: ①....
1.3 不适合以自增ID主键作为主键的情况 数据量多需要分库分表,可能会造成ID重复 经常会遇到数据迁移的情况 新数据需要和老数据进行合并 2.UUID作为主键 2.1 介绍 虽然UUID() 值是 旨在独一无二,它们不一定是不可猜测的 或不可预测。如果需要不可预测性,UUID 值应该以其他方式生成。 UUID:Universally Unique l...
由于UUID 是乱序的,使用 UUID 插入的时候就有可能发生页分裂的情况 三、补充知识 既然说到了页分裂,就顺便提一下页合并吧,页合并与主键自增和非自增并没有关系,它是在删除行或者通过 UPDATE 操作缩短行时才有可能发生的情况 当DELETE 或 UPDATE 缩短了行长度时,索引页的 "page-full" 百分比低于 MERGE_THRESHO...