2017-01-03 30 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

謝謝邁克爾,我得到了現在。 –