我应该使用哪个服务器? (300GB的MySQL数据库和狮身人面像)

可能重复:
你能帮我做一下容量规划吗?

我写了一个应用程序,使用MySQL和狮身人面像来search和存储信息。

该应用程序包含一个重量为300GB的数据库(主要是文本,中文和variables)。 我的狮身人面像索引权重30GB。

我的问题是,当我打算有一个100GB的数据库,我现在有一个300GB的,不能被加载到内存(?)。

我正在寻找能给我最高性能的最好的build筑。

我的应用程序首先得到一个查询,然后运行它对狮身人面像索引,从狮身人面像获取大量ID,查询数据库为这些ID几个文本字段,并将结果发送到.NET排名(特殊algorithm)。

为了获得最佳的性能,我使用了一个至强i7 W3520服务器和2个SSD磁盘(24GB内存)用于MySQL,并不便宜,我的空间不足,无法添加更多的磁盘,所以我需要另一台服务器。

你认为如果我将一个服务器与MySQL的常规磁盘使用会有一个主要的性能影响? 我知道我需要快速磁盘的狮身人面像search(这是我的全文search引擎),我使用索引字段(ID)从数据库中select行,没有任何复杂的查询,我可能需要承载DB有足够存储空间的更便宜的服务器。

你能发现我的瓶颈吗? .NET应用程序大多需要RAM和CPU,DB需要大量的空间和RAM,而sphinx需要快速的磁盘和RAM。

  1. 是否有可能加载MySQL索引到RAM?
  2. 我能做些什么来减轻数据库的大小,如果300GB?
  3. 具有较慢磁盘的服务器是否会影响性能? (我不能在硬件上花费数百美元来进行基准testing)。
  4. 如果我使用Linux或Windows机器的MySQL是否有关系吗?

我正在寻找能给我最高性能的最好的build筑。

这里有什么问题? 不要误解我的意思,但是有一个办法可以做到这一点 – 将数据库放在可以获得的最快的SSD中。

可能有道理吗? 不知道,但你不要求一个足够快的情况,但最高的性能。

我现在有一个300GB的,不能被加载到内存(?)。

你知道,这是不正确的。 根据今天的标准,512GB服务器并不是特别大。

具有较慢磁盘的服务器是否会影响性能?

当然会的。 正常情况下,IOPS-IO性能是数据库未装载到RAM中时数据库的限制因素。

你认为如果我将一个服务器与MySQL的常规磁盘使用会有一个主要的性能影响? 一世

定义“普通光盘”。 对于一个高性能的数据库来说,一个15k RPM的SAS磁盘arrays是“常规的”,每个磁盘的IOPS比常规磁盘大约多3-4倍,但是……这样的小型数据库就把它放到一个512GB的SSD并获得50.000 IOPS而不是500左右的15k SAS驱动器给你。

数据库需要大量的空间和RAM,狮身人面像需要快速的磁盘和RAM。

任何不能从RAM中填充所有东西的数据库通常都会受到光盘的限制,主要是因为光盘的速度非常慢。 获得最快速的光盘子系统是标准的更大的数据库安装,但是你有一个小的数据库,所以一个简单的SSD是足够好的。 不幸的是,它的性能仍然比RAM差得多。

我能做些什么来减轻数据库的大小,如果300GB?

意识到这是微小的? 我家有一个850GB的数据库,最后一个是21000GB的数据库。 取决于我现在可以访问的一些数据,我只是得到了44000gb高度压缩的数据,我需要处理。 300GB是“获得记忆”小。

如果我使用Linux或Windows机器的MySQL是否有关系吗?

也许这样做,但这是完全不相关的这个问题。 Windows可能有 – 取决于configuration – 更大的开销,但它不会有所作为。 当你处理这样的系统,那么残酷的spekaingan额外的128M的开销使零差异。

你真的知道你的服务器在做什么,你知道性能瓶颈在哪里吗? 如果你没有任何forms的监测和趋势跟踪,你是盲目的。

也许只是添加适当的数据索引可以帮助你?

可能IO确实是你的限制,但也许你有很多空闲的CPU周期,只是压缩数据库中保留的blob可以增加内存 – caching命中率,而不用花时间去压缩,这可能是不明显的。

我会争辩说,在linux下运行mysql / sphinx会给你更好的机会看到和跟踪“里面发生了什么”。