介绍 我从我之前的问题单驱动器与多驱动器中得出这个问题
在从一位非常有帮助的成员RolandoMySQLDBA那里得到非常详细的答案并了解到多驱动器在某些情况下可以提供很大帮助的事实之后。我开始为我的设置研究多驱动器,这与我发现的相比只是一点点。
更多信息 我发现了相当大的存储空间,比如
http://www.newegg.com/Product/Product.aspx?Item=N82E16811152212
虽然有些视频显示了此类设备的写入速度甚至达到 GB
- http://www.youtube.com/watch?v=Xjgw2ENYF6w
- http://www.youtube.com/watch?v=PniGlSI900k
- http://www.youtube.com/watch?v=I8ToJ4Blw74
真正的问题 如果有足够的 RAM 来保存索引,MySQL 或其他开源 RDBMS(不是像 Oracle 这样的企业级 RDBMS,因为它在 SAN 上运行很常见)可以轻松地在这些野兽上运行吗?
因为它们包含真正的多驱动器设置,并且有数十个磁头可用。
我相信它不会那么简单,因为如果它那么简单,那么为什么大多数企业设置都使用商用服务器。那么,使用这些极端存储解决方案会面临哪些问题呢?
所要做的就是运行这些查询:
MyISAM
InnoDB
这些将为现有 MyISAM 的 MyISAM 密钥缓存和 InnoDB 数据和索引的 InnoDB 缓冲池推荐正确的大小。
在运行这些 SQL 查询建议缓冲区大小时,人为因素仍然必须发挥作用。我们必须根据硬件和经常访问的数据来规划数据使用。我们还必须问:在建议的缓冲区数量中,我的工作集有多少实际驻留在内存中?
如果将 MySQL 配置为将 75% 的 RAM 用于 InnoDB,即使在专用的 MySQL 服务器上,操作系统也会忙于分页到磁盘。仅仅因为 MySQL 可以使用大量的缓冲区大小并不意味着可以突破限制。两个有两个基本的存储引擎需要考虑。
商品硬件的使用仅仅展示了 MySQL 的可配置性并具有显着的结果。除非你正在使用 32 位 RHEL(如果你是,请立即停止使用它,喝点咖啡,去升级),提高存储野兽的缓冲区大小是值得信赖的。
例如,我的雇主有一个客户端,其中有 3 个数据库服务器专用于 MySQL。每个都有 192GB 的 RAM,其中 162GB 是 InnoDB 缓冲池。工作集实际上是 170GB。虽然进行了一些交换和分页,但数据库性能令人震惊。操作系统本身有大约 30GB 的 RAM(16GB 的 RAM 磁盘用于临时表)。我敢肯定,与那里的科莫多龙大小的数据库服务器相比,这些服务器只是小蜥蜴。如果配置得当,MySQL 可以胜任这项任务。
请记住,InnoDB 有自己的制衡机制,因为当前源代码将 InnoDB 日志文件限制为 4GB。之所以如此,是因为 InnoDB 最初是为商用硬件设计的。鉴于此,无论存储野兽的硬件设置和您选择运行的 MySQL 版本如何,ACID 事务吞吐量都可能成为瓶颈。
结论
可以对 Big Beefy DB 服务器施加限制。您应该始终在内存、交换空间、工作数据集和预期事务数方面考虑操作系统。