我通过PHP在MySQL中插入大约50k个条目。表格很简单,有ID(自动增量),很少有VARCHAR字段...
由于这个系统允许多个用户同时登录并执行相同的插入数据操作,所以让我们说USER1启动“插入”,并且在同样的毫秒内USER2开始在同一个表中插入数据 - 我很好奇MySQL将等待USER1完成进程并处理USER2条目,否则它将同时插入?
因此,遵循该逻辑USER1插入ID将从1到50k,USER2从50k到100k,或者另一方面它会将它们洗牌吗?
......如果它会“洗牌”,有没有办法阻止这种情况?
P.S。我知道 - 我可以用user_id添加额外的字段,这样我就可以区分哪个用户做了实际的“输入”,但在这种情况下我真的想保留1-50k的空间用于USER1和50k-100k用于USER2。 ...
答案 0 :(得分:1)
要保留表格,从而为自己保留自动增量ID,您应该在开始插入之前LOCK
表格。否则很可能“改组”ids。
请注意, nothing ,即使是锁定,也能保证自动增量ID的连续性。我知道有一个带有连续ID的插入块是一个“很好的接触”,但这不是它们的用途,并且系统无法保证这样做。所以不要依赖它或以任何方式期待它。
答案 1 :(得分:1)
你不应该在意这一点 Id只是一个唯一创建的标识符,没有特殊含义 只要您对此标识符赋予特殊含义,您将面临灾难。