以下是我对日志文件组的理解。
每当插入/更新innodb表时,将在innodb_log_buffer_size中捕获这些表。 如果innodb_log_buffer_size已填满或时间已将其刷新到光盘,则它们将被写入innodb_log_files,这些文件在组中维护并同时在表空间中提交。
现在我的问题是为什么我们不应该将innodb_log_files的集体大小超过innodb_buffer_pool的大小,为什么我们应该写入这些日志文件,尽管我们将它刷新到光盘......?
我无法通过网络对此进行适当的解释,至少我无法理解。请给我一些更好的解释。
提前非常感谢。 问候, UDAY
答案 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.