-2

我通过 PHP 在 MySQL 中插入了大约 50k 个条目。表很简单,带有 ID(自动增量)和几个 VARCHAR 字段......

由于该系统允许多个用户同时登录并执行相同的插入数据操作,所以假设 USER1 开始“插入”并且在同一毫秒内 USER2 开始在同一个表中插入数据 - 我很好奇 MySQL 是否会等待USER1 完成处理,然后处理 USER2 条目,否则它会同时插入?

所以按照这个逻辑,USER1插入ID将从1到50k,USER2从50k-100k,或者另一方面它会洗牌吗?

...如果它会“洗牌”,有没有办法防止这种情况?

PS我知道-我可以添加带有user_id的附加字段,这样我就可以区分哪个用户进行了实际的“输入”,但是在这种情况下,我真的很想为USER1保留1-50k的空间,为USER2保留50k-100k的空间……

4

2 回答 2

1

要为您自己保留表格并因此自动增加 ID,您应该LOCK在开始插入之前保留表格。否则,很可能会“改组” id。

请注意,即使是锁定,也不能保证自动增量 ID 的连续性。我知道拥有一个具有连续 id 的插入块将是“一个不错的选择”,但这不是它们的用途,并且系统中没有保证可以做到这一点。所以不要以任何方式依赖它或期望它。

于 2013-02-11T18:23:45.873 回答
1

你不应该关心那个。
Id 只是一个唯一创建的标识符,没有特殊含义
任何时候你在这个标识符上赋予特殊意义,你都会面临一场灾难。

于 2013-02-11T18:25:28.010 回答