我正在尝试购买一个新的服务器来运行 MySQL 服务器。这个新服务器将成为我主机的从属。但是,该服务器将专门用于报告“大量读取和复杂查询”。
现在我正在考虑投资固态硬盘,但想知道它是否真的物有所值。SSD 和 SATA 7200 硬盘的差价约为 1500 美元,而 SSD 的磁盘空间较少。如果我确实投资SSD,速度会很明显吗?
我可以购买 4 个(500GB SATA 7200)比购买 2 个(500GB SSD)少 1500 美元
你能帮我做决定看看是否值得升级吗?
我想再提一提的是,我没有使用,query_cache所以会有很多磁盘读取。
该服务器将有 32GB 的 RAM 并将运行 Ubuntu 12.04
nma*_*mad 26
是的,大量读取和报告 SSD 会产生巨大的差异。从 7200 RPM 驱动器开始,您可以期望不超过 ~100 IOPS,而最便宜的 SSD 可以至少快 5 倍。使用良好的 SSD,您可以达到 20000 IOPS 甚至更高。
此外,SSD 中的随机写入速度要快得多,因为磁盘不必每次都移动。
Nat*_*lly 23
您需要在这里考虑三个因素:
innodb_buffer_pool_size如果可用内存 > 数据库大小,您的服务器可能能够将所有数据保存在内存中,因此 SSD 可能是浪费金钱。InnoDB 缓冲区与query_cache选项无关。
如果可用内存 < 数据库大小,则查询可能需要从磁盘检索数据。对于极其复杂的查询,或者如果许多用户同时运行查询,这可能会给磁盘带来压力。
通常,数据库将最常用的数据保存在内存中——如果 80% 的数据很少/从未使用过,那么您只需将 20% 的数据库保存在内存中即可保持性能。
您需要的确切内存量不会立即显而易见,但除非您的数据库为 200GB+,否则我强烈建议您采纳 Up_One 的建议并在内存而不是 SSD 上花费额外的钱。
注意:如果您的数据库正在使用 MyISAM(您可以使用 进行检查show table status;),请考虑更改为 InnoDB。MyISAMkey_buffer_cache只存储索引块,而 InnoDB 缓冲池存储整个数据块。在大多数情况下,InnoDB 将被证明是一个更好的引擎。
我不认为这是一个好主意!
我的建议是
增加 InnoDB 缓冲池的大小是加速 MySQL 的最佳方法。如果您可以添加更多 RAM,请执行此操作。这会将您的大部分热数据放在内存中,所以想象一下!磁盘与内存!
完美的方案是让您的内存与数据库
SSD的大小相同- 很棒,但它会很贵!它只适用于阅读密集型工作。
检查此链接以获取来自 Vadim Tkachenko 的精彩文章
提供一个替代方案:您可以同时使用两个大硬盘(理想情况下,具有三个磁盘的 RAID1)来保存数据,并使用一个较小的 SSD 来保存索引。
理由:
小智 5
做吧。
您提到您有大量读取工作负载,因此您已经避免了在数据库上使用 SSD 的大问题:磨损。没有写就意味着没有磨损,所以你是金子。
正如 edvinas.me 所提到的,SSD 的 IOPS 比旋转磁盘快几个数量级。对于数据库,IOPS 几乎可以转化为每秒请求数。忽略 RAM 缓存,来自 SSD 的请求数将是来自 7200RPM 磁盘的请求数的 100 倍。
TRIM 不会有太大的不同,因为它是一个读取繁重的工作负载,而且听起来您无论如何都打算填充磁盘。不要为此感到压力。
我不确定 1500 美元的东西是从哪里来的。检查我当地的(澳大利亚)供应商,我可以以 750 美元的价格获得一个 960GB 的知名品牌 SSD ( http://www.auspcmarket.com.au/960gb-crucial-m500-sata-6gbps-2-5-7mm-with- 9-5mm-adapter-ssd-read-500mb-s-write-400mb-s/)。旋转磁盘或多或少是免费的,但 750 美元仍然比 1500 美元更可口。
(哦,等等 - 你可能是从大牌供应商那里订购的,所以他们对你的 SSD 收费?我总是单独购买 SSD 并自己换,但我不知道那是不是在您的环境中是允许的。)
您也可能会减少 RAM,但如果不知道您的确切工作负载,就很难判断您是否可以安全地减少 RAM 而不会影响性能。
如果您仍然不确定,您可以获得 10k RPM 的大型驱动器,但它们最终的成本几乎与 SSD 一样多,但速度要慢得多。
如果您需要扩展到 1TB 以上,那么 SSD 就开始变得太贵了,但在 1TB 时,我认为 SSD 是一个明显的胜利。
| 归档时间: |
|
| 查看次数: |
87350 次 |
| 最近记录: |