0

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

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

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

我无法通过网络得到正确的解释,至少我无法理解。请给我一些更好的解释。

真的提前谢谢了。问候, UDAY

4

1 回答 1

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。

于 2012-03-30T04:47:05.470 回答