首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么innodb缓冲池内存在命令“优化表”之后会增长?

为什么innodb缓冲池内存在命令“优化表”之后会增长?
EN

Stack Overflow用户
提问于 2019-03-21 12:57:06
回答 1查看 361关注 0票数 2

我使用本地机器上的码头与Mysql容器。

步骤:

  1. 启动mysql码头。使用内存约2-2.5G。
  2. 启动命令“优化表”。使用记忆成长到4.5-5G;
  3. 重新启动mysql停靠程序,并再次使用内存2-2.5G (见屏幕截图)
  4. 列出项目;

数据库有10个小表(< 10行)和一个大型表( 10 ,000,000行,10列,表对每一列都有索引)。

为什么会这样?抱歉我的英语不太好。

屏幕截图

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-09 22:16:14

  • 不要在OPTIMIZE TABLE表上使用InnoDB。它几乎从来不提供任何好处。
  • OPTIMIZE TABLE复制表。显然您有innodb_file_per_table = OFF,这意味着它将在ibdata1中复制表的第二个副本。
  • “每一栏的索引”--这通常是一种浪费。请看SELECTs ou,看看您可以使用哪些索引。(在这里寻求帮助,但提供SHOW CREATE TABLE和相关查询。)
  • buffer_pool在内存中;它的大小受到innodb_buffer_pool_size的限制。当MySQL启动时(例如,在您的Docker中),它将从小到增长,可能会达到这个大小。
  • 执行OPTIMIZE (特别是使用如此多的索引)将消耗部分或全部可用的buffer_pool。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55280975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档