好消息

好消息

我目前在 Windows 2003 机器的单个 CPU 上运行 MySQL 5.0。我正在考虑添加另一个处理器来提高性能,因为服务器上的一些应用程序在发出数据库请求时速度变慢了。MySQL 能否在两个 CPU 之间均衡负载?

答案1

MySQL 服务器肯定是多线程的。但是,每个查询都在单个线程中执行。在大多数情况下,“缓慢”问题不是由于缺乏处理能力……而是缺乏 RAM 和/或适当的索引。在运行查询时,系统会将数据缓存在 RAM 中……当 RAM 用完时,操作系统开始使用交换空间进行补偿。交换……很慢。

解决方案可以包括:

  • 在盒子里放入更多 RAM。
  • 在 my.cnf 中设置限制。这也会产生副作用,即限制太低而无法完成任务。
  • 优化索引。有时添加索引可以为系统节省大量内存,这样系统就不必为每个查询查找相同的值……有时它会产生相反的效果,即索引了实际上不需要的字段,而这只会占用 RAM。

需要考虑的变量数量非常多。数据库管理是否正确是整个程度的体现。这不是一个简单的“翻转开关”问题/答案。您可能应该聘请顾问或定期处理此类问题的人。

****编辑**** 我提到的解决方案没有特定的顺序。没有单一的灵丹妙药可以解决您的问题。解决您的问题可能需要我提到的所有 3 个选项以及其他选项。我的列表不完整,可以轻松添加。还应考虑 Memcaching、集群和许多其他选项。

答案2

我有好消息和坏消息要告诉你

好消息

MySQL 服务器是多线程的

坏消息

MySQL 5.5 之前的 InnoDB 存储引擎和 MySQL 5.1 的 InnoDB 插件(从 MySQL 5.1.38 开始)不是多线程的。

建议

请升级到 MySQL 5.5。升级到 MySQL 5.5 或 Percona Server 5.x 后,您仍必须配置 InnoDB 以支持多核活动。

我在 DBA StackExchange 上写过几十次关于这个话题的文章。这里仅列举几个:

从这些帖子中,您将了解到必须对 InnoDB 进行适当调整才能使其访问更多核心。

相关内容