可能重复:
你能帮我做一下容量规划吗?
我写了一个应用程序,使用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。
我正在寻找能给我最高性能的最好的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会给你更好的机会看到和跟踪“里面发生了什么”。