gpt4 book ai didi

mysql - RDBMS:单个大表的 RAID 与表分区

转载 作者:行者123 更新时间:2023-11-29 08:16:52 27 4
gpt4 key购买 nike


我们有一个大约 10 TB 的巨大表,其中每行大约 10 KB。主键的类型是BIGINT,并且是均匀分布的。该服务器拥有 40 GB RAM、两个 4 核 Xeon CPU 和五个 2 TB 磁盘。工作负载仅仅是单个插入/更新或按主键选择。不需要事务或连接。

考虑到表和可用 RAM,缓存似乎不会非常有效,因为查询大多是随机的。现在的问题是哪种配置更适合每秒更多的查询(尤其是选择):

  1. 使用 RAID-0 或带 strip 化的 LVM 来提高读/写性能。
  2. 使用表分区(使用主键)并将每个表存储在不同的硬盘中。

我们希望使用 MySQL,但其他开源 DBMS(如 PostgreSQL)也是可以接受的。从逻辑上讲,对于我们的设置来说,分区必须工作得更好,因为寻道分布在不同的磁盘之间。然而,最常用的模式是使用 RAID-0。

有人对这个问题有任何想法或经验吗?

最佳答案

无论是跨单独的物理磁盘对数据进行分区,还是使用 RAID 0,其想法都是在多个可以并行工作的驱动器磁头/盘片之间分割磁盘访问,以加快访问速度。

从理论上讲,它们是相当等效的,但是,当我们考虑使用索引获得的好处时,分区应该排在前面。

您在问题中指出您正在插入记录(而不仅仅是追加),因此,您的索引通常需要重建。重建较小的分区索引比重建一个大索引的开销要少,更不用说重建其他分区时不必等待另一个分区的并发优势了。

此外,搜索分区(较小)索引的速度更快。这两个索引的好处是表分区存在的主要原因,因此这里似乎是一个很好的例子。

我从未在多个物理磁盘上对表进行分区。假设这是可能的,这听起来是个好主意。

关于mysql - RDBMS:单个大表的 RAID 与表分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20427795/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com