TRUNCATE TABLE通常被视为 DML 语句,因此当二进制日志记录模式为ROW或 时,应使用基于行的格式进行记录和复制MIXED。但是,这会在以STATEMENT或 MIXED模式记录或复制使用事务存储引擎的表时出现问题,例如InnoDB当事务隔离级别为READ COMMITTED或READ UNCOMMITTED时,这会排除基于语句的日志记录。
TRUNCATE TABLE
ROW
MIXED
STATEMENT
InnoDB
READ COMMITTED
READ UNCOMMITTED
TRUNCATE TABLE出于记录和复制的目的被视为 DDL 而不是 DML,因此它可以作为语句记录和复制。但是,适用 InnoDB于副本的语句和其他事务表的影响仍然遵循 第 13.1.34 节“TRUNCATE TABLE 语句”中描述的管理此类表的规则。(漏洞 #36763)