【发布时间】:2011-10-08 20:38:22
【问题描述】:
我正在尝试通过向每个表添加一列来更改 2000 个表。我通过在 C# 中使用 for 循环并对每个表名执行查询以获取我拥有的字符串列表来实现这一点。它开始很快,但随后变得越来越慢。 mysql.exe 的内存在大约 30 秒内从 50k 增加到 375k。为什么要这样做?一旦我做了一个改变表,内存应该再次下降。每次更改后是否没有处理某些资源?缓存还是缓冲区?垃圾收集?我无法完成这个 for 循环,因为它在第 20-25 个 alter table 之后变得非常慢。
【问题讨论】:
-
赞成,因为您的问题阻止了我编写一些代码以完全相同的方式做完全相同的事情。那谢谢啦! :-)
-
为什么有 2000 张桌子? 50k 到 375k 是否正确?我的意思是.... 现在很少看到数据库软件使用少于 1MB 的内存。一台相当普通的机器可以运行接近 10.000 个 375KB 程序的实例。对吗?
-
这是一个我的世界服务器。每个级别都有一个与之关联的表。内存在任务管理器(WINDOWS 7)中从 50k 开始,在我执行脚本时增加到 375k。
-
表是 innodb 还是 myisam ?
-
Innodb。我只是要坚持下去,让它运行很长时间。到目前为止,脚本已经运行了一个多小时。有点奇怪。它将在 10 秒内添加 20 个表格。然后休息 5-10 分钟。
标签: c# mysql memory-management alter