延迟的固有原因是因为主服务器从服务器有两个线程,但只能单线程顺序执行,另外也有网络延迟等的原因。
导致延迟的原因:
主服务器可以并行多线程执行,而从服务器由于有两个进程需要互相依赖,不能并行执行。
由于低效率join操作导致的长执行查询。
硬盘IO瓶颈。
数据锁。
InnoDB 并发线程问题。
延迟的解决方法:
1、有效的组织你的数据:数据规则化、数据分区。
2、分而治之,各个突破:足够多的slave;当出现所有slave lag(延迟)需要replication filtering和intermediary slave
3、找出long-running查询,从构查询:简化查询或者用事务代替。使用事务的时候要考虑由于slave 执行导致的数据丢失。
4、负载均衡。
5、保持硬件持续更新。
6、减少锁争夺:MyISAM锁表和InnoDB row-level锁。