我正在开发一个系统,其中包括将大量数据导出到csv文件中。我们在表中使用InnoDB。 InnoDB在某些庄园中缓冲先前的查询/结果。 现在在生产环境中这是一件非常好的事情但是在我的开发环境中测试导出的性能时却不是。 缓冲池大小似乎约为128MB。 我在谷歌上找不到这个,除了你可以在服务器启动时更改一些MySQL设置。
任何人都知道可能有一个sql语句阻止它被放入缓冲区吗?
答案 0 :(得分:0)
这是一个无问题(自5.1.41起)
不可能阻止任何InnoDB活动通过buffer_pool。它在设计中深深扎根。
buffer_pool缓存数据和索引块,而不是查询/结果。查询缓存使用查询/结果。但通常应该禁用生产系统的质量控制。
innodb_old_blocks_pct(默认值= 37,表示缓冲区池的%)可防止从某些操作中清除缓冲池,例如“导出”所需的读取。
参见http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_old_blocks_pct 以及该部分中的链接。
答案 1 :(得分:0)
然后将缓冲池设置为一个非常小的值(例如:1MB)