July 2013

Innodb log sys 相关的一些随笔

随笔记录,比较凌乱 A.log_sys的几个和log buffer相关的变量 buf_size:      log_sys->buf_size = LOG_BUFFER_SIZE;         LOG_BUFFER_SIZE为srv_log_buffer_size * UNIV_PAGE_SIZE, 也就是变量innodb_log_buffer_size的大小 buf_free        指向当前在log buf中可写入的起始偏移量 max_buf_free         log_sys->max_buf_free = log_sys->buf_size / LOG_BUF_FLUSH_RATIO                 – LOG_BUF_FLUSH_MARGIN; #define LOG_BUF_WRITE_MARGIN    (4 * OS_FILE_LOG_BLOCK_SIZE)  #define LOG_BUF_FLUSH_RATIO     2 #define LOG_BUF_FLUSH_MARGIN    (LOG_BUF_WRITE_MARGIN + 4 * UNIV_PAGE_SIZE) log_sys->max_buf_free主要用于: 1.当当前已经写入文件的位置(log_sys->write_end_offset)在buf中的log_sys/max_buf_free的二分之一时,也就是差不多1/4的log buffer的位置时,会做一次memmove,将从log_sys->write_end_offset到log_sys->buf_free之间以512字节的block为单位进行memmove到log buf的起始部分。同时修改log_sys->buf_free […]