2012-03-01 46 views
0

我有15k个对象需要每天写入数据库。我使用cronjob每晚写入mysql服务器。每晚,这些15k对象中有99%将是相同的,并在数据库中唯一标识。覆盖数据库中的唯一行 - 此方法是否错误?

我已经建立了一个DB规则,指出将不会有重复的行通过指定一个唯一的键。

我不想在实际插入它之前检查现有的行。

因此,我选择每天晚上插入所有15k对象,并允许mysql防止重复行......(当然它会抛出错误)。

我这样做是因为如果我检查一个预先存在的行 - 它会显着降低速度。

我的问题:一次插入所有15k并允许mysql防止重复有什么问题吗? (没有手动检查预先存在的行)是否有一个阈值,如果mysql错误超过1000次,它会自己锁定并拒绝所有后续查询?

请帮忙!

回答

3

使用INSERT IGNORE INTO...将使MySQL丢弃该行而不出错并保持行已经存在。也许这是你想要的?

如果你想改写现有的行,你可以做INSERT INTO ... ON DUPLICATE KEY UPDATE ...。见docs