我在另一篇文章上看到评论说InnoDB可以通过在每次提交时不刷新二进制日志来优化速度。
这是我第一次听说这个,那么这些二进制日志又是什么呢?我为什么要这样做(什么时候不这样做)以及怎么做?
答案 0 :(得分:2)
MySQL的二进制日志充当与日记文件系统中的日志等效的数据库。每个查询都会记录在其中,因此如果数据库在某些时候崩溃,您可以“重放”二进制日志并以最小的痛苦重建数据库。它也用于复制。
此处有更多详情:http://dev.mysql.com/doc/refman/5.1/en/binary-log.html
答案 1 :(得分:2)
二进制日志用于崩溃恢复和复制。假设它们已启用,则有关刷新的两个主要适用设置为:
这些设置有利于速度超过“保证”的可靠性,因为它们允许操作系统延迟将缓冲区刷新到磁盘。
如果你在廉价的磁盘控制器上运行(大多数人都是),在每次提交时刷新日志非常慢。在进行大量写操作的网站上,我看到页面执行时间下降了10x-100x!您可以轻松运行自己的基准测试,并了解它对您的影响。
非常清楚,如果您希望获得最大的恢复优势,则必须将这两个值都设置为1.如上所述,在系统崩溃的情况下,您可能会丢失几秒钟的数据。对于某些网站,这是不可接受的。对于博客和论坛,这可能是值得的权衡。
您可以在此处详细了解设置:
http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html
还有许多与内存相关的选项,例如'innodb_buffer_pool_size'。搜索MySQL InnoDB调优应该会有所帮助。
答案 2 :(得分:1)
InnoDB通过重播日志从崩溃中恢复。它还用于将主服务器复制到从服务器。