mysql中大事物提交延迟问题及解决方法

在mysql主从复制中,如果主库存在大事物提交,从库则可能会延迟,所以在主库执行的事物尽量使用小事物,下面举一个例子:

,udate


主库:

insert into t1(id,name,title,cdate,udate) select id2,name2,tile2,cdate2,udate2 from t2 where id2>xxxx and cdate <'2017-xx-xx xx:xx:xx';


上面的一个sql,如果在查询阶段很慢,或者查询出数据很多,主库执行这个就不会很快,如果主库执行需要1分多钟,从库就也可能是1分多,甚至如果从库配置较低,就可能更长时间。怎么解决呢?就是通过缩小事物。

第一种:限制查询出的数据,从而限制插入数据

insert into t1(id,name,title,cdate,udate) select id2,name2,tile2,cdate2,udate2 from t2 where id2>xxxx and cdate <'2017-xx-xx xx:xx:xx' and id2 not in (select id from t1)limit 10000;


注意:这种方法比较慢,且查询数据随着不断插入,存在不稳定性。


第二种:通过条件导出需要的insert sql.

SELECT concat('insert into t1(id,name,title,cdate,udate) values(',id2,',',name2,',',cdate2,',',udate2)  from t2 where id2>xxxx and cdate <'2017-xx-xx xx:xx:xx' ;


通过第二种方法可以和好的避免延迟问题,也可以很快的完成任务。






你可能感兴趣的:(mysql)