二进行日志的格式为row

mysql> show variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW |
+---------------+-------+
1 row in set (0.00 sec)

在testdb库下执行

mysql> select * from t1;
+----+------+
| id | name |
+----+------+
| 1 | NULL |
| 2 | chen |
| 3 | li |
+----+------+
3 rows in set (0.00 sec) mysql> select * from t2;
+------+--------+
| id | course |
+------+--------+
| 1 | NULL |
| 2 | chen |
| 3 | math |
+------+--------+
3 rows in set (0.00 sec) mysql> truncate table t1; mysql> delete from t2;

执行命令:mysqlbinlog --no-defaults -vv good.000001:主要看红色加粗字体部分:

# at 2162
#160303 11:02:51 server id 4 end_log_pos 2248 CRC32 0x3544cc1f Query thread_id=2755623 exec_time=0 error_code=0
SET TIMESTAMP=1456974171/*!*/;
truncate table t1
/*!*/;
# at 2248
#160303 11:05:40 server id 4 end_log_pos 2322 CRC32 0xf5126972 Query thread_id=2756326 exec_time=0 error_code=0
SET TIMESTAMP=1456974340/*!*/;
BEGIN
/*!*/;
# at 2322
#160303 11:05:40 server id 4 end_log_pos 2372 CRC32 0xba9c0edd Table_map: `testdb`.`t2` mapped to number 12204
# at 2372
#160303 11:05:40 server id 4 end_log_pos 2432 CRC32 0xd1433d85 Delete_rows: table id 12204 flags: STMT_END_F BINLOG '
BKrXVhMEAAAAMgAAAEQJAAAAAKwvAAAAAAEABnRlc3RkYgACdDIAAgMPAhQAA90OnLo=
BKrXViAEAAAAPAAAAIAJAAAAAKwvAAAAAAEAAgAC//4BAAAA/AIAAAAEY2hlbvwDAAAABG1hdGiF
PUPR
'/*!*/;
### DELETE FROM `testdb`.`t2`
### WHERE
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
### @2=NULL /* INT meta=20 nullable=1 is_null=1 */
### DELETE FROM `testdb`.`t2`
### WHERE
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
### @2='chen' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### DELETE FROM `testdb`.`t2`
### WHERE
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
### @2='math' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */

# at 2432
#160303 11:05:40 server id 4 end_log_pos 2463 CRC32 0x225aa989 Xid = 8390829
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
可以看到二者的不同,truncate直接是以一条语句复杂过来,而delete命令是直接把每条删除的语句一条条记录下来,所以假如要删除全表的数据,用truncate命令会比用delete命令少记录很多内容,日志内容会大减少,肯效率会更高

另外:delete与truncate还有以下的不同:
1. truncatedelete只删除数据不删除表的结构(定义) 2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
truncateddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger. 3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动
显然drop语句将表所占用的空间全部释放
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate 会将高水线复位(回到最开始). 4.速度,一般来说: truncate > delete 5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及. 使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据/

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

mysql 在row模式下truncate 与 delete 二进制日志记录的差异的更多相关文章

  1. MySQL在ROW模式下通过binlog提取SQL语句

    Linux基于row模式的binlog,生成DML(insert/update/delete)的rollback语句通过mysqlbinlog -v 解析binlog生成可读的sql文件提取需要处理的 ...

  2. MySQL备份方案-->(利用mysqldump以及binlog二进制日志)

                                                         MySQL备份方案-->(利用mysqldump以及binlog二进制日志) 随着数据不 ...

  3. Tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中

    Tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中 在Linux系统中,Tomcat 启动后默认将很多信息都写入到 catalina.out 文件中,我们可以通过tail  ...

  4. EF.Mysql在codefirst模式下调用存储过程,和再DbFirst模式下的调用

    List<GetUserUpCrmList_Result> r = null; using (var context = new HimallContext()) { var parame ...

  5. 部署tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中

    在Linux系统中,Tomcat 启动后默认将很多信息都写入到 catalina.out 文件中,我们可以通过tail  -f  catalina.out 来跟踪Tomcat 和相关应用运行的情况. ...

  6. Mysql的二进制日志binlog的模式说明

    binlog模式总共可分为以下三种:row,statement,mixed 1.Row日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改,只记录要修改的数据,只有value ...

  7. mysql dba系统学习(6)二进制日志binlog之二

    MySQL 5.5 中对于二进制日志 (binlog) 有 3 种不同的格式可选:Mixed,Statement,Row,默认格式是 Statement.总结一下这三种格式日志的优缺点.MySQL R ...

  8. 【夯实Mysql基础】MySQL在Linux系统下配置文件及日志详解

    本文地址 分享提纲: 1. 概述 2. 详解配置文件 3. 详解日志 1.概述 MySQL配置文件在Windows下叫my.ini,在MySQL的安装根目录下:在Linux下叫my.cnf,该文件位于 ...

  9. (4.7)mysql备份还原——深入解析二进制日志(3)binlog的三种日志记录模式详解

    关键词:binlog模式,binlog,二进制日志,binlog日志 目录概述 0.binlog概述 查看binlog日志参数设置: show variables like '%log_bin%'; ...

随机推荐

  1. ubuntu下安装Node.js(源码安装)

    最近使用hexo的过程中出现了问题,中间载nodejs安装的时候也耽误了些许时间,所以在此记录一下安装的过程. 环境:ubuntu14.0.4LTS,安装nodejs版本node-v0.10.36.t ...

  2. Codeforces Round #384 (Div. 2) A. Vladik and flights 水题

    A. Vladik and flights 题目链接 http://codeforces.com/contest/743/problem/A 题面 Vladik is a competitive pr ...

  3. Material Design练习

    最近写了个小应用练习material design的控件使用,使用豆瓣V2 API访问豆瓣电影,程序很小,也就用了几个API而已,能够显示北美票房榜.电影排行榜,查看电影详情,以及进行电影搜索,可惜豆 ...

  4. LR6 碱性电池才能带动微软鼠标

    LR6 碱性电池才能带动微软鼠标   好前一段买个一个微软无线鼠标后来动弹不得,更换电池也不行,本来lp说为什么不扔掉,但因为实在做得很漂亮一直带在身边.改用雷柏的普通无线鼠标后也很是好用.不过要经常 ...

  5. ASP.NET中彩票项目中的计算复式投注的注数的方法

    从别人做的项目中抽取出的代码:

  6. Hbase0.98.4/Hadoop2.4.1整合小结【原创】

    设定hbase的数据目录,修改conf/hbase-site.xml <configuration> <property> <name>hbase.cluster. ...

  7. 公钥、私钥、CA认证、数字签名、U盾

    感谢传智播客的方立勋老师,在一个教学视频上,他巧妙地以蒋介石给宋美龄写密信作为例子,生动地讲述了软件密码学知识. 加密分为对称加密和非对称加密,我们传统理解的,发送数据之前使用一个加密器加密,接到数据 ...

  8. Android 模拟器 获得 root权限

    启动一个模拟器,开始-运行-输入cmd,打开dos,依次输入 adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system ...

  9. Can't get WebApplicationContext object from ContextRegistry.GetContext(): Resource handler for the 'web' protocol is not defined

    I'm stucked in configuring my web.config file under a web forms project in order to get an instance ...

  10. 配置<authorization>节(配置文件)

    在 Web.config 文件的<configuration>标记的子标记<authorization>和</authorization>之间用于设置应用程序的授权 ...