在MySQL中,我需要执行一个很长的INSERT INTO t1 SELECT FROM t2
,并且我不希望t2
保持写锁定时间过长。
我的想法是通过重复发出如下问题来遍历t2.id
INSERT INTO t1 SELECT FROM t2 WHERE t2.id BETWEEN n0 AND n1
INSERT INTO t1 SELECT FROM t2 WHERE t2.id BETWEEN n1 AND n2
...
两个问题:
编辑:如评论中所建议的,如果脏读取是可接受的(如我的情况),SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
允许运行初始查询而没有锁定。