MySQL 内存限制 Windows Server 2003

MySQL 内存限制 Windows Server 2003

我在安装了 3GB 内存的 HP DL580 G4 上运行 Windows Server 2003 Standard Edition 上的 MySQL 5.0.51a。我的一个数据库表已增长到 5.3 GB,索引文件为 2.5 GB,我认为这是导致 MySQL 运行缓慢的原因,因为在对表进行更新时必须不断加载和卸载索引文件。服务器本身似乎运行正常,因为 MySQL 仅使用大约 500MB 内存(系统上运行着其他应用程序,但 MySQL 占用的内存最多)。

该表相当活跃,全天都在添加新记录,但从未删除过。MySQL 服务器最多允许 600 个连接,但实际上只有少数(10 或 20 个)会写入此表。我增加了 MySQL 中的内存限制,但由于最大连接数太高,我认为如果不冒问题的风险,就不能给每个连接 1GB。是否有一些调整可以让某些连接获得大量内存?

因此,我开始寻找替代方案来避免我知道即将来临的危机。我有一些选择:

  1. 升级到 Server 2003 Enterprise 以安装 64GB 内存。问题:32 位 MySQL 能够访问超过 2GB 的内存吗?每个线程会是 2GB 吗?这仍然小于索引表大小,因此它可能无法完全解决问题,但比现在要好。

  2. 升级到 Server 200x 64 位和 MySQL 64 位。

  3. 切换到 *nix 64 位服务器。

如果有人对在此期间要做的事情有建议、对要走的路有意见或者我忽略的其他事情有的话,我将不胜感激。

谢谢

答案1

您可能在中设置了最大内存值my.conf。在 MySQL 目录中找到该文件,将最大内存值编辑为合理的值,然后重新启动 MySQL 服务。

即使在没有 PAE 或 /3GB 开关的 32 位 Windows 上,您也应该能够让单个进程寻址高达 2GB 的 RAM。

答案2

另一条评论……感谢 MYSql 在您当前的环境中运行良好。选项 2 和 3 是您的最佳选择。作为 Windows 用户,如果是我,我会选择 x64 平台。在 RAM 和驱动器阵列上过度使用,您就成功了。

但是,MySql 在 Linux 上表现非常好。如果你有这方面的技能,你不会后悔走这条路。

如果您继续使用相同的硬件,则需要使用 Linux。选项 2 仅在转到新平台时才有效。

Server Enterprise 的许可成本相当高(我认为)。它的功能集是针对高端计算量身定制的,并且仍然将 MySQL 限制为仅 4 GB 空间(我认为,我的企业知识是基于阅读,没有太多实际操作)。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa366796(v=vs.85).aspx

高血压

答案3

听起来你正在运行带有 MyISAM 表的 MySQL。在这种配置下,MySQL 服务器不消耗大量内存是很常见的。与 InnoDB 或 MS SQL Server 不同,它们在进程内为数据库的数据和索引页保留了大量内存,而 MyISAM 主要依靠 OS 文件系统缓存来缓冲磁盘数据,但有一个明显的例外密钥缓冲区

如果您发现插入或更新速度缓慢,则可能需要检查输出SHOW PROCESSLIST并查找执行 DML 语句的连接状态。如果您看到与索引相关的活动持续很长时间,请考虑增加密钥缓冲区大小

相关内容