当前位置:  开发笔记 > 后端 > 正文

注册上的随机ID生成 - 数据库性能

如何解决《注册上的随机ID生成-数据库性能》经验,为你挑选了1个好方法。

我正在建立一个网站,每个帐户都有一个ID.但是,我不想让它增量,意思是:
id = 1
id = 2
...
id = 1000

我想要的是随机ID:
id = 2355
id = 5647734
id = 23532
...

(原因是避免机器人只通过增加URL中的ID来检查所有帐户配置文件 - 也许是其他原因,但这不是问题)
但是,我担心注册时的性能.
它将是这样的:

while(不采用RANDOM_ID):生成新的RANDOM_ID

在为新帐户生成新ID时,我将查询数据库(MySQL)以检查每个代的ID是否存在.
有没有更好的解决方案呢?
使用随机ID有什么不利之处吗?

提前致谢.



1> Aaronaught..:

有许多原因没有这样做:

您所写的解决方案不具有交易安全性; 同时两个事务都可以生成相同的"随机"ID.

如果为了使其安全而序列化事务,则会扼杀性能,因为查询将锁定每个冲突行,直到找到备用ID.

使用随机ID作为主键将使聚集索引中的地狱碎片化.对于uuids来说这已经够糟了 - 自动生成的标识列的重点就是让你可以生成一个安全的序列.

为什么不使用常规主键,但不要在任何URL中使用它?生成辅助非顺序ID以及它 - 例如uuid - 索引它,如果您真的担心安全性,则在应用程序的任何面向公众的段中使用此列而不是主键.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有