主从同步延迟
- mysql的主从复制都是单线程的操作,主库对所有DDL和DML产生的日志写进bin log,由于bin log是顺序写,所以效率很高。
- master和slave之间的数据传输依靠了内部网络或专线,一般来说也是比较快的
- slave读取master的数据写入relay log是追加日志,属于顺序io效率并不低
- slave的sql thread线程将主库的DDL和DML操作事件在slave中重放。DML和DDL的IO操作是随机的,不是顺序,所以成本要高很多
- 另一方面,由于sql thread也是单线程的,当主库的并发较高时,产生的DML数量超过slave的SQL thread所能处理的速度,或者当slave中有大型query语句产生了锁等待,那么延时就产生了。