MySQL 内存未释放

时间:2021-07-03 03:36:01

标签: mysql python-3.x memory mysql-connector-python

我有一个 MySQL (8.0.16) 在具有 64GB RAM 的 AWS RDS 上运行(所有表都是 Innodb)。一天几次,我将一堆表和视图完全同步到另一个数据库中。这是在 python 脚本中完成的,使用 mysql.connector 库创建数据库游标,运行 select * from {table/view},然后使用 fetchone() 方法循环结果。效果很好,而且不会花太长时间。

但是,我注意到在数据库重新启动后第一次运行此同步时,我的可用内存减少了大约 40GB,并且当同步过程结束时,内存不会被释放。此同步过程的后续运行不会导致任何额外的显着内存使用,但初始内存会一直使用,直到我再次重新启动数据库。

随着时间的推移,我的表越来越大,我可以看到这些下降是如何变大的,我很清楚我需要改变一些东西以避免耗尽我的内存资源。

我不是 MySQL 专业人士,所以我不确定这是否与加载到内存中的索引有关 - 如果是这样,我可以/应该避免在我的脚本中使用索引吗?每次同步完成后,我是否可以从内存中“卸载”索引?或者可能是系统变量配置不佳需要调整?

可以使用任何建议。

0 个答案:

没有答案