2017-01-03 29 views
0

我通过ioprofile检查了MYSQL的IO活动,并发现binlog使用了大部分的写入系统调用,但是事务日志使用了大部分写入类型的pwrite系统调用,我的问题是为什么binlog使用大部分的写系统调用,但是为事务日志写pwrite?从结果ioprofile写入和写入MYSQL

total  pread  read  pwrite  write  fsync  open  lseek filename 
    3027   0  549   0  2478   0   0   0 /data/mysql/XXX-bin.048425 
    1848   0   0  1820   0   28   0   0 /data/mysql/ib_logfile1 

回答

0

两个操作基本上是相等的,除了pwrite接受位置的4阿根廷,而write隐含在手柄的电流偏移指针写入数据。

binlog几乎总是通过将数据附加到末尾来编写的。

重做日志更像是一个环形缓冲区,通常在大小上是固定的,其中写入从接近尾端回到接近开始处。

pwrite()函数应相当于write(),除了它写入到一个给定的位置,而不改变文件的指针。

pwrite()的前三个参数与write()相同,并且为文件内的所需位置添加了第四个参数偏移量。

https://linux.die.net/man/3/pwrite

+0

谢谢迈克尔,我得到了现在。 –