San*_*nuj 5 mysql database-design partitioning
我不明白与使用单独的表来存储旧记录相比,分区如何帮助我或多或少。
我需要维护一个股票条目列表以及有关该股票的历史记录。
因此,在这里我可以选择,如果某些库存停产,我可以将该库存移动到另一个表中,该表仅在用户想要查看旧数据的报告时访问。
我的另一个选择是对表进行分区,但由于我对分区知之甚少,我不确定这是否真的对我有帮助。
每次从库存中移除库存时,都会访问库存记录。一旦剩余数量达到 0,该项目需要保留在表中,仅用于报告目的。购买更多库存时会创建一个新条目。
我已经阅读了有关分区的 dev.mysql 文档。
问题
对于 DBA 而言,分区有助于处理大型表和管理目的。正如 Kim Tripp 所说,如果您有 50GB 的数据,您应该开始仅仅为了性能而考虑分区。
然而,作为一名 DBA,我发现分区非常适合管理大型表和报告来自 OLTP 源的数据,我认为您正在描述这一点。分区还允许您创建不同的索引、不同的填充因子,并利用它们之上的索引视图,利用“分区表上的索引视图”来收集聚合类型函数的巨大性能提升。
在我的建议中,熟悉分区。它可以为你免除灾难。我曾经继承了一个包含 60 亿行的表,并且每天以 2-3GB 的速度增长,而驱动器上只有 20GB 的可用空间。我能够为新数据创建一个新分区,将所有旧数据复制到 RAID 5 上的不同数据库,并更新代码以引用视图;在 24/7 商店中,所有这些都无需客户停机。随着数据集变大,分区至关重要。