为什么我们不应该将innodb_log_files的集体大小超过innodb_buffer_pool的大小

时间:2012-03-29 11:41:38

标签: mysql crash-recovery

以下是我对日志文件组的理解。

每当插入/更新innodb表时,将在innodb_log_buffer_size中捕获这些表。 如果innodb_log_buffer_size已填满或时间已将其刷新到光盘,则它们将被写入innodb_log_files,这些文件在组中维护并同时在表空间中提交。

现在我的问题是为什么我们不应该将innodb_log_files的集体大小超过innodb_buffer_pool的大小,为什么我们应该写入这些日志文件,尽管我们将它刷新到光盘......?

我无法通过网络对此进行适当的解释,至少我无法理解。请给我一些更好的解释。

提前非常感谢。 问候, UDAY

1 个答案:

答案 0 :(得分:1)

Now my question is that why we should not have the collective size of innodb_log_files more than the size of the innodb_buffer_pool and why should we write to these log files though we are flushing it to the disc...?

- >我不确定提及的位置innodb_buffer_pool_size应始终超过此值innodb_log_files_in_group * innodb_log_file_size。 当然!对于仅Innodb安装,innodb_buffer_pool_size的建议大小应为可用内存的70-80%,应大于默认值8MB。

innodb_log_buffer_size一个大型日志缓冲区可以在事务提交之前运行大型事务,而无需将日志写入磁盘。因此,如果您有大事务,使日志缓冲区更大可以节省磁盘I / O.

innodb_log_file_size值越大,缓冲池中需要的检查点刷新活动越少,从而节省了磁盘I / O.但是更大的日志文件也意味着在崩溃的情况下恢复速度较慢。 您应该在几分钟内观察Innodb_os_log_written变量,并估计每秒向InnoDB事务日志写入的字节数。您可以将此值乘以3600(一小时)并除以innodb_log_files_in_group以选择良好的日志文件大小。

innodb_log_buffer_size在内部使用以记录这些日志文件,以便保存光盘I / O.