我有一个innodb mysql数据库,我想知道查询缓存是否在表中的任何更改时刷新,或者当只有那些记录发生更改时它会被刷新?
我有一个大表每隔几分钟就会被修改一次,所以我想知道它是多么有用。
由于
答案 0 :(得分:2)
我认为您不是在讨论查询缓存,而是关于缓冲区缓存。
查询缓存是最新SQL语句的缓存,它们永远不会刷新到磁盘。
刷新缓冲区缓存并不像刷新缓冲区日志那么重要。日志会跟踪对数据库内数据执行的更新。它用于在发生故障时恢复数据库,即缓冲区高速缓存未刷新到磁盘时。
在InnoDB中有3种主要方法可以刷新缓冲区日志,并使用参数innodb_flush_log_at_trx_commit
控制它们。
MySQL docs引用:
“如果发生崩溃,你可以负担丢失一些最新提交的事务,你可以将innodb_flush_log_at_trx_commit参数设置为0.无论如何,InnoDB会尝试每秒刷新一次日志,尽管冲洗不是此外,将innodb_support_xa的值设置为0,这将减少因磁盘数据和二进制日志同步而导致的磁盘刷新次数。“
来源:http://dev.mysql.com/doc/refman/5.1/en/innodb-tuning.html
希望有所帮助