浅析MySQL二进制日志
作者:网络转载 发布时间:[ 2012/9/25 9:48:34 ] 推荐标签:
2.3 查询语句
查询语句的类型是Query事件,这也是常见的事件,用来存储主库上执行的语句,其实除了实际执行的语句外,这个事件还要包含一些附加的信息。如在写入一行数据中含有AUTO_INCREMENT的字段,我们执行一下写入,然后可以看到日志事件中多了哪些事件:
执行下面语句:
insert into i_node(name,value) values("sql","copy");
可以得到多了两条日志事件
| master-bin.000004 | 451 | Intvar | 1 | 479 | INSERT_ID=12 |
| master-bin.000004 | 479 | Query | 1 | 596 | use `db_info`; insert into i_node(name,value) values("sql","copy") |
+-------------------+-----+-------------+-----------+-------------+-----------------------------------------------------------------------------+
其实除此以外,还有其它的一些上下文信息会给当前的执行带来结果的影响,这些都是MySQL执行时需要知道的隐式信息。如:
1、当前数据库。可以看到我执行insert时,并没有执行use db_info这条语句,但是也被日志事件记录下来。因为我在初执行了,后面MYSQL都采用当前的数据库来执行语句。
2、用户自定义变量的值。如我执行下面两条语句之后
mysql> set @value = 'copy-on-write';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into i_node(name,value) values("sql",@value);
Query OK, 1 row affected (0.00 sec)
可以看到此时的日志事件如下:
| master-bin.000004 | 596 | Intvar | 1 | 624 | INSERT_ID=13 |
| master-bin.000004 | 624 | User var | 1 | 675 | @`value`=_latin1 0x636F70792D6F6E2D7772697465 COLLATE latin1_swedish_ci |
| master-bin.000004 | 675 | Query | 1 | 792 | use `db_info`; insert into i_node(name,value) values("sql",@value) |
多了一个变量的赋值操作,类型是User var
3、RAND()函数的种子。在执行随机数时,不会记录其随机数,会记录其种子数。
4、当前时间。
5、AUTO_INCREMENT字段的插入值,这个是一个上下文,因为它与前面的行有关。
6、LAST_INSERT_ID函数。
7、线程ID,调用CORRENT_ID函数。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11