跪求指教,mysql短期挂起

james_med 2018-04-21 10:27:53
先描述下现象,我的程序是不停把终端发来的数据,insert到mysql的表中。
用的过程中发现,总是一段时间之后(几小时),就会出现insert操作挂起的情况,时长5-20秒不等,但之后又恢复正常。

经过不断的摸索,发现mysqld.exe的占用内存会不断上升,而上升到一定程度,就不再增加了。这个上升量大约就是innodb_buffer_pool_size的大小。而Innodb_buffer_pool_pages_free这个值被耗尽的时候,就是mysql语句挂起的时候,挂起占用的时间不定,一般都要好几秒。

我尝试过修改innodb_buffer_pool_size这个值,但是由于Innodb_buffer_pool_pages_data会不停增加,再大的innodb_buffer_pool_size也无济于事。

请教如何才能避免这种Innodb_buffer_pool_pages_free耗尽带来的mysql挂起呢?这到底是是什么原理,我大概猜测应该是mysql在内存和磁盘之间切换,但这个挂起时间真的无法接收,虽然是一次性的。


...全文
1238 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2018-05-02
  • 打赏
  • 举报
回复
是不是当时有什么备份工作在锁表?
生命沉思者 2018-04-29
  • 打赏
  • 举报
回复
你的内在有多大,我估计是innodb_buffer_pool_size配置得太大
james_med 2018-04-23
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
mysql数据会定期从内存flush到磁盘文件,这个需要时间。除非足够大内存
感谢版主大大,想了解一下这个内存flush到磁盘文件的规则是怎样的,周期是多久,每次需要的时间又和什么相关。 是不是innodb_buffer_pool_size被用完之后就会flush一次。 再次感谢。 我已经大概知道该怎么做了,我准备定期清除数据,把数据量控制在innodb_buffer_pool_size范围内。
oyljerry 2018-04-22
  • 打赏
  • 举报
回复
mysql数据会定期从内存flush到磁盘文件,这个需要时间。除非足够大内存

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧