在主/从数据库复制中,所有写入都转到主机。所有读取都转到从机。主机将数据复制到从机。当 master 复制数据到 slave 时,slave 机器必须进行写入,这将锁定该行。从从机读取速度更快,但为什么呢?
问问题
1406 次
2 回答
6
从站应该快很多,因为:
- 它所做的数据写入量与master相同
- 对从属设备的写入绕过所有语法和权限检查(所有这些工作 - 而且很多 - 由主设备在处理查询时完成 - 只有数据更改被发送到从属设备)
- 除了您作为测试执行的内容之外,它没有其他读取
- 复制是为尽可能快的同步速度而设计的优化过程,因此如果主服务器出现故障,从服务器尽可能保持最新。这意味着通过设计它必须在从站上造成尽可能少的工作
这一切都意味着从站的负载远低于主站。
实际上,将读取重定向到从属设备是一种已知的性能修改。
于 2013-01-03T19:27:40.633 回答
4
师傅很忙
- 它并行写入数据(这很明显)
- 它会导致磁盘 I/O 写入二进制日志,将已完成 SQL 的集合序列化到其二进制日志中
- 它通过将完成的 SQL 从其二进制日志传递到从站的 I/O 线程(通过
SHOW PROCESSLIST;
用户名在主站上可见system user
)来管理复制。连接到主站的从站越多,这可能会稍微减慢速度。
奴隶不那么忙,因为它......
- 为 MySQL 复制序列化 I/O
- 通过 IO 线程从 Master 收集 SQL
- 将 IO 线程中的 SQL 记录到其最新的中继日志中
- SQL 线程从中继日志中读取下一个可用的 SQL
- 通过 SQL 线程一次处理一个 SQL 命令/一个事务
- 如果Slave 拥有所有 MyISAM 并且 Master 拥有所有 InnoDB,则在 Slave 上写入具有外键约束的表将不必执行任何引用完整性检查。从站上不必发生MVCC。
将奴隶和主人置于同一公平竞争环境的唯一例外是
- 如果从站启用了二进制日志记录。如果从站只是从站,则不需要,但如果从站也是主站,则需要
- 如果多个 SQL 语句作为单个 InnoDB 事务处理。
- 如果硬件不同
- Master 拥有更快的磁盘、更多的内核、更多的 RAM
- 从站是一个商品服务器
于 2013-01-03T21:56:15.453 回答