详解mysql复制机制--异步复制,半同步复制和并行复制

详解mysql复制机制--异步复制,半同步复制和并行复制

图4mysql

那么如何并行化,并行IO线程,仍是并行SQL线程?其实两方面均可以并行,可是并行SQL线程的收益更大,由于SQL线程作的事情更多(解析,执行)。并行IO线程,能够将从Master拉取和写Relay log分为两个线程;并行SQL线程则能够根据须要作到库级并行,表级并行,事务级并行。库级并行在mysql官方版本5.6已经实现。以下图,并行复制框架实际包含了一个协调线程和若干个工做线程,协调线程负责分发和解决冲突,工做线程只负责执行。web

图中,DB1,DB2和DB3的事务就能够并发执行,提升了复制的性能。有时候库级并发可能不够,须要作表级并发,或更细粒度的事务级并发。sql

详解mysql复制机制--异步复制,半同步复制和并行复制

图 5并发

并行复制如何处理冲突?框架

并发的世界是美好的,但不能乱并发,不然数据就乱了。Master上面经过锁机制来保证并发的事务有序进行,那么并行复制呢?Slave必需保证回放的顺序与Master上事务执行顺序一致,所以只要作到顺序读取binlog,将不冲突的事务并发执行便可。对于库级并发而言,协调线程要保证执行同一个库的事务放在一个工做线程串行执行;对于表级并发而言,协调线程要保证同一个表的事务串行执行;对于事务级而言,则是保证操做同一行的事务串行执行。异步

是否粒度越细,性能越好?性能

这个并非必定的。相对于串行复制而言,并行复制多了一个协调线程。协调线程一个重要做用是解决冲突,粒度越细的并发,可能会有更多的冲突,最终可能也是串行执行的,但消耗了大量的冲突检测代价。spa

相关文章
相关标签/搜索