MySQL - InnoDB 缓冲池,disable/workaround

MySQL - InnoDB buffer pool, disable/workaround

我正在开发一个包括将大量数据导出到 csv 文件的系统。我们正在为我们的表使用 InnoDB。 InnoDB 在一些庄园中缓冲前 queries/results。 现在在生产环境中这是一件非常好的事情,但在我的开发环境中测试导出的性能时却不是。 缓冲池大小似乎在 128MB 左右。 除了您可以在服务器启动时更改某些 MySQL 设置外,我在 google 上找不到太多相关信息。

任何人都知道可能有一个 sql 语句阻止它被放入缓冲区的解决方法?

没问题(自 5.1.41 起)

不可能阻止任何 InnoDB activity 通过 buffer_pool。设计的太根深蒂固了。

buffer_pool 缓存数据和索引 ,而不是 queries/results。查询缓存使用 queries/results。但是通常应该为生产系统禁用 QC。

innodb_old_blocks_pct(默认值 = 37,表示 buffer_pool 的百分比)防止从某些操作中清除缓冲池,例如 'export'.[=11= 所需的读取]

http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_old_blocks_pct 以及该部分中的链接。

然后将缓冲池设置为非常小的值(例如:1MB)如何?