Windows Server 2003上是否支持MySQL 5.0多处理器?

我正在Windows 2003计算机上的单个CPU上运行MySQL 5.0。 我正在考虑添加另一个处理器来提高性能,因为服务器上的某些应用程序在数据库请求发生时正在减速。 MySQL能够连载两个cpus的负载吗?

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

解决scheme可包括:

  • 在盒子里扔更多的内存。
  • 在my.cnf中设置限制。 当限制太低而不能完成任务时,这也会产生副作用。
  • 优化索引。 有时,添加索引可以节省系统大量的内存,因此不必为每个查询查找相同的值…有时,它可能会产生相反的效果,因为您在索引真正不需要的字段时,它只是吃了RAM。

有大量的variables来看待。 有完整的学位基于正确的数据库pipe理。 这不是一个简单的“翻转这个开关”问题/答案。 您应该聘请一位顾问或定期处理这类问题的人。

****编辑****我提到的解决scheme没有特定的顺序。 没有一个能够解决你的问题的魔法弹。 解决你的问题可能涉及我提到的所有3个以及其他选项。 我的列表不完整,可以很容易地添加到。 还应该考虑Memcaching,集群和其他许多选项。

我对你有好消息和坏消息

好消息

MySQL服务器是multithreading的

坏消息

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

build议

请升级到MySQL 5.5。 一旦升级到MySQL 5.5或Percona Server 5.x,您仍然必须为InnoDBconfiguration多个核心活动。

我在DBA StackExchange中已经写了几十次了。 这里仅仅是less数:

  • Sep 20, 2011 : 多核心和MySQL性能
  • Sep 12, 2011 : 可能使MySQL使用多个核心
  • May 26, 2011 : 关于单线程与multithreading数据库的性能

从这些文章中,您将会了解到InnoDB必须经过适当的调整才能获得更多的内核。