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)如何?
我正在开发一个包括将大量数据导出到 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)如何?