解决方法
我不认为没有锁定就可以删除.也就是说,我不认为锁定您要删除的记录是一个问题.什么问题是锁定其他行.
我在这里找到了一些关于该主题的信息:http://dev.mysql.com/doc/refman/5.0/en/innodb-locks-set.html
我建议的是尝试做一百万次单行删除.我认为如果你在一次交易中做所有这些,性能不应该太大.所以你会得到类似的东西:
START TRANSACTION; DELETE FROM tab WHERE id = 1; .. .. DELETE FROM tab WHERE id = x; COMMIT;
您可以通过执行类似的操作来生成所需的语句
SELECT CONCAT('DELETE FROM tab WHERE id = ',id) FROM tab WHERE <some intricate condition that selects the set you want to delete>
所以优于这种方法而不是做:
DELETE FROM tab WHERE <some intricate condition that selects the set you want to delete>
在第一种方法中,您只能锁定要删除的记录,而在第二种方法中,您可能会遇到锁定其他记录的风险,这些记录恰好与您要删除的行在同一范围内.