【发布时间】:2012-09-10 04:06:31
【问题描述】:
我的表格中总是有一个“ID”字段,并使用这些 ID 完成我的 PHP 工作。
喜欢;
id Username
1 User1
2 User2
3 User3
PHP 是这样工作的;
show_member_details.php?memberID=3
ID 字段始终设置为自动递增。
在大型项目/表上依赖 MySQL 的自动增量功能是否安全?就像一个表中的一百万个条目?
【问题讨论】:
-
你为什么会觉得这不安全?
-
我读过一篇文章,其中 MySQL 自动增量功能有时在大表上不可靠。 (就像一百万个条目)但找不到链接。
-
不可靠是什么意思?
-
想象一下您在 PHP 端执行此任务。一个表中有 3 个人,但是您删除了一个,所以现在总数为 2。PHP 本身会通过计算 ID 表来给一个新的注册人拥有 ID 3。但是,ID 3 属于您删除的帐户。因此,它可以将他的 cmets 保存在某个地方。新帐户将自动附加旧帐户的 cmets。基本都是这样的。自动增量功能将提供一个新的注册人 4 作为 ID,因此它不会影响其他表。但是,它会在大表上成功计数,还是在数据库恢复后?
-
auto_increment 不可靠的唯一方法是,如果您为预期用途选择了太小的整数类型。例如看看 twitter,它使用签名的 32 位 int 作为推文 ID - 他们用完了,不得不使用 bigints 重建。