我正在开发一个web应用程序,在我的开发环境和实际环境中,在MySQL查找速度之间遇到了很大的性能差异。
数据库: 2.5GB,三个表(一个表有2700万条记录)。全文索引和搜索。在需要的地方,所有的东西都有索引。数据库包含英国所有地址的记录。
开发服务器:两岁的三星i5超级本。运行XAMPP的Windows 8。单人SSD。大多数查找不超过200毫秒,故意强调系统导致最大查找时间为5秒。
活动服务器:“混合”VPS (每个服务器最多8个节点)。硬件规格是“双英特尔Xeon处理器,至少8 CPU核心,24 of,Raid 10驱动器与15K SAS驱动器”。大多数查找大约需要3-5秒,压力测试会导致30秒的查找.
我对我的开发服务器上的数据库性能很满意,但是我真的需要生产服务器来匹配或更好地匹配它。
在我花在这个应用程序的专用盒子上之前,根据您的经验,瓶颈可能是磁盘I/O或CPU时间吗?
我只是把这个问题的答案写下来:
我在带有RAID的SSD的VPS上试用了这个应用程序。两者的区别是日以继夜,现在的查找速度甚至比我的开发机器还要快。这是一个默认的MySQL安装,没有对缓存、最大内存使用量和其他参数进行编辑。
发布于 2013-11-25 10:55:59
暂时忽略MySQL --所有数据库都是一样的。物理并不关心开源。
一般情况下,你是IO有限公司,除非你不是。最后一种方法是拥有足够的RAM来缓存内存中的所有IO操作--这是大型OLAP工作负载的典型情况。但是,任何事务性的限制都比CPU早得多,除非CPU很可怜(也就是说,您总是可以构建一个强制CPU过载的服务器--对于数据库服务器来说,原子可能是一个糟糕的选择)。
现在生产服务器。SOmeone主要犯了“愚蠢”的错误买东西。
Raid 10驱动器与15K SAS驱动器“。
这是大约450 IOPS每驱动器。
单SSD
这是大约40.000到60.000 IOPS -可以上升到90.000取决于磁盘和负载。
看到问题了吗?SSD是围绕SAS光盘飞行-这是一个游戏改变。SAS很慢。我在我的主数据库中使用了很多10k的SAS光盘--但是使用了SSD作为透明缓存层。
因此,除非您有足够的RAM使SAS光盘变得无关紧要(缓存内存中的所有内容),然后预加载(这在您仅有2.5g的小型数据库上是可行的).它是IO约束的。
在您的特殊情况下,我将检查配置。MySQL标准配置将IIRC不使用大量内存,无论它是否存在。使用一个微型数据库(2.5g),您应该将其全部缓存在内存中。甚至在笔记本电脑上。看起来是配置问题。
https://serverfault.com/questions/557205
复制相似问题