面试题答案
一键面试ROW格式
- 数据一致性:记录每一行数据的修改,能精确还原数据变更,数据一致性强,即使复杂的事务操作也能保证主从数据完全一致。
- 系统性能:由于记录每行数据变化,日志量较大,会增加磁盘I/O和网络传输压力,在高并发场景下,可能影响系统性能。
STATEMENT格式
- 数据一致性:记录的是SQL语句,某些情况下可能出现主从数据不一致问题,如使用NOW()函数等不确定函数,主从执行结果可能不同。
- 系统性能:日志量小,磁盘I/O和网络传输压力小,对系统性能影响较小,在高并发场景下,性能相对较好。
MIXED格式
- 数据一致性:结合了ROW和STATEMENT格式,根据SQL语句的特性自动选择记录格式,对于不确定函数等情况使用ROW格式,其他使用STATEMENT格式,数据一致性介于两者之间。
- 系统性能:日志量和性能也介于两者之间,根据实际SQL执行情况有所波动。
选择策略
- 对数据一致性要求极高:优先选择ROW格式,如金融交易等场景,确保主从数据完全一致,即使牺牲部分性能。
- 对性能要求极高且数据一致性要求可适当放宽:可选择STATEMENT格式,如一些对数据实时性要求不高的统计类应用,以获得更好的性能。
- 折中方案:MIXED格式适用于大多数场景,在保证数据一致性的同时尽量兼顾性能,开发时需关注可能导致主从不一致的SQL语句。