mysql binlog格式是有哪些,各自优点和缺点有哪些?
	MySQL 的 binlog(二进制日志)用于记录对数据库进行的所有更改操作,主要用于数据恢复、主从复制和审计。binlog 有三种格式,每种格式在不同的场景下有各自的优点和缺点:
1. STATEMENT 格式
	在 STATEMENT 格式下,MySQL 将每一条修改数据的 SQL 语句记录到 binlog 中,而不是记录具体的行级数据变化。换句话说,binlog 中记录的内容就是执行的 SQL 语句。
优点:
- 
		占用空间小:相比其他格式,STATEMENT格式只记录 SQL 语句,binlog文件的大小通常较小。
- 
		性能较好:因为它只记录 SQL 语句,而不是每一行数据的变化,生成和写入 binlog的开销较小,尤其是当修改了大量数据时,binlog的生成速度和磁盘 I/O 负担较轻。
- 
		适合大多数简单的操作:对于简单的 INSERT、UPDATE、DELETE语句,使用STATEMENT格式足够高效。
缺点:
- 
		非确定性行为可能出错:如果 SQL 语句在执行时存在非确定性,如包含 NOW()、UUID()、RAND()这样的函数,或者依赖于自定义的用户变量,STATEMENT可能导致主从复制的不一致。
- 
		复杂语句的重放风险:某些复杂的 SQL 语句(如 INSERT ... SELECT、触发器、存储过程等)在主从复制或数据恢复时可能会引发问题,因为这些语句的执行顺序和环境依赖于运行时的上下文。
- 
		性能副作用:某些语句在主库上执行一次,可能会在从库上执行多次,增加了从库的负担。例如,涉及到大规模表的 UPDATE和DELETE操作。
热门日志
分类
- git(9)
- Mac(7)
- C(1)
- memcache(1)
- Python(32)
- Vim(8)
- sed(2)
- ansible(3)
- awk(4)
- shell(3)
- Django(4)
- ssdb(1)
- bat(4)
- svn(0)
- docker(1)
- Tornado(1)
- go(2)
- 架构(19)
- Vue(1)
- game(2)
- AI(1)
- Windows(8)
- Java(8)
- Mysql(38)
- Ajax(2)
- Jsp(1)
- Struts(8)
- Linux(73)
- JavaScript(39)
- Staruml(0)
- Mouth(1)
- Html(6)
- Php(102)
- Message(51)
- Lua(10)
- Compute(1)
- Redis(7)
- Nginx(12)
- Jquery(1)
- Apache(1)
- cocos2d-x(8)
- about(1)

