【发布时间】:2013-12-24 00:49:22
【问题描述】:
我们有一个大约 10 TB 的大表,其中每行大约 10 KB。
主键的类型是 BIGINT,它是均匀分布的。
该服务器有 40 GB 的 RAM、两个 4 核 Xeon CPU 和五个 2 TB 磁盘。工作负载只是单次插入/更新或按主键选择。不需要任何事务或连接。
考虑到表和可用 RAM,缓存似乎不会很有效,因为查询大多是随机的。现在的问题是哪种配置更适合每秒更多查询(尤其是选择):
- 使用带有条带化的 RAID-0 或 LVM 来提高读/写性能。
- 使用表分区(使用主键)并将每个表存储在不同的硬盘中。
我们想使用 MySQL,但也可以使用其他开源 DBMS,例如 PostgreSQL。从逻辑上讲,对于我们的设置,分区必须更好地工作,因为搜索分布在不同的磁盘之间。但是,最常用的模式是使用 RAID-0。
有没有人对这个问题有任何想法或经验。
【问题讨论】:
-
是的,我已经看到了,但没有帮助!
-
你存储什么样的数据?也许您需要的是分布式键值存储,而不是单个巨大的表。 Postgres 和 MySQL 提供了不同的优势,所以除非你能确定你在做什么,否则它们都是有效的选择。
-
@tadman 大部分数据是压缩文本。我知道我们可以使用 Voldemort、HBase 和 Cassandra 等解决方案。但是,我们只有一个服务器。我应该承认我们正在使用 RDBMS 作为键/值存储。
-
单个服务器不是这里的答案。至少设置一个管理程序并在您的系统上为每个物理驱动器设置一个虚拟实例,这将为您提供更多的耐用性。键值存储很容易分片。
标签: mysql postgresql performance rdbms large-data