1

目前我有这台服务器

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 15
model       : 2
model name  : Intel(R) Xeon(TM) CPU 2.40GHz
stepping    : 9
cpu MHz     : 2392.149
cache size  : 512 KB

我的应用程序每秒处理 200-300 个事务,导致 MySQL 96% 的 CPU 使用率更高。任何人都可以提供帮助,提供链接我如何

  • 对 PostgreSQL 做基准测试
  • 你认为 PostgreSQL 可以提高 CPU 利用率而不是 MySQL
  • 链接, wiki, 只显示基准比较
4

1 回答 1

8

数据库用户的一个常见误解是高 CPU 使用率不好。

它不是。

数据库只有一个速度:尽可能快。它总是会在管理员设置的限制内用尽所有资源,以快速执行您的查询。

大多数查询比其他查询需要更多的一种特定资源。对于大型数据库上的大多数查询,资源是磁盘 I/O,因此数据库将尽可能快地破坏您的存储。在等待硬盘驱动器时,它通常不能做任何其他工作,因此线程/进程将进入睡眠状态并停止使用 CPU。

较小的数据库,或对大型数据库中的小型数据集的查询,通常完全适合 RAM。操作系统将从磁盘缓存数据,并将其放在 RAM 中,并准备好在数据库请求时返回。这意味着数据库不会等待磁盘并被迫休眠,因此它会全力以赴地使用 CPU 处理数据以快速为您提供答案。

您可能关心 CPU 使用的原因有两个:

  • 您在那台机器上运行的其他东西没有获得足够的 CPU 时间;或者
  • 您认为鉴于 100% 的 cpu 使用率,您没有从数据库中获得足够的性能

对于第一点,不要责怪数据库。这是一个管理员问题。设置操作系统调度程序控件,例如漂亮的级别,以重新确定工作负载的优先级 - 或者获得更大的服务器,可以完成您需要的所有工作而不会落后。

对于第二点,您需要查看您的数据库调整、查询等。这不是“数据库使用 100% cpu”的问题,而是“我没有获得足够的吞吐量并且似乎受 CPU 限制”的问题. 数据库和查询调优是一个很大的话题,我不会在这里讨论,尤其是因为我通常不使用 MySQL。

于 2012-06-28T03:51:42.663 回答