MySQL性能瓶颈 – I / O还是CPU?

我正在开发一个Web应用程序,并且在我的开发和实际环境中的MySQL查询速度之间遇到了巨大的性能差异。

数据库: 2.5GB,三个表(一个表有27millogging)。 FULLTEXT索引和search。 一切都在需要索引。 数据库包含英国所有地址的logging。

DEV服务器:两岁的三星i5 Ultrabook。 运行XAMPP的Windows 8。 单个SSD。 大多数查找需要200ms以下,故意强调系统最大查找时间为5秒。

实时服务器: “混合”VPS(每个服务器最多8个节点)。 硬件规格是“双核英特尔®至强®处理器,最less8个CPU核心,24GB内存,RAID 10驱动器与15K SAS驱动器”。 大多数查找需要大约3-5秒,压力testing导致30秒查找。

我很满意我的开发服务器上的数据库性能,但是我真的需要生产服务器来匹配或者更好的。

在我为应用程序开发一个专用的盒子之前,根据您的经验,瓶颈可能是磁盘I / O还是CPU时间?

谢谢!


只是发布一个答案的logging:

我尝试使用带有RAID的SSD的VPS上的应用程序。 不同之处在于夜以继日,查找现在比我的开发机器还要快。 这是默认的MySQL安装,没有对caching,最大内存使用情况和其他参数进行编辑。

暂时忽略MySQL – 这对于所有数据库都是一样的。 物理学不关心开源。

一般来说,你是IO有限公司,除非你不是。 最后的意思是有足够的内存来caching内存中的所有IO操作 – 通常用于大型OLAP工作负载。 但是任何事务都会比CPU更早地将IO作为一个限制,除非CPU是可悲的(也就是说,你总是可以构build一个强制CPU超载的服务器 – primefaces可能是数据库服务器的不错select)。

生产服务器。 SOmeone购买这个主要做出“愚蠢的”错误。

Raid 10驱动器与15K SAS驱动器“。

这是每个驱动器大约450 IOPS。

单个SSD

这大概是40.000到60.000 IOPS – 根据光盘和负载,可以达到90.000。

看到问题? SSD在SAS盘片周围飞行 – 这是一个游戏改变者。 SAS很慢。 我在主数据库中使用了大量的10k SAS磁盘,但SSD采用了透明caching层。

所以,除非你有足够的内存来让SAS光盘无关紧要(caching内存中的所有内容),然后预加载(这对你的2.5g的小型数据库是可行的)。

在你的具体情况下,我会检查configuration。 MySQL标准configuration将IIRC不使用大量的内存,不pipe它是否在那里。 有了一个小的数据库(2.5克),你应该把它全部caching在内存中。 即使在笔记本电脑上。 看起来像一个configuration问题。