我是在大型数据库中查询的新手。我想知道将一个非常大的数据表分成几个分区是否会提高或降低存储效率和查询速度。例如,如果我有一个非常大的数据表,其中包含一年的信息,有 3 亿行和近 30 列,那么将其分成 12 个月更好还是保持不变?它会提高效率或存储空间,还是没有?
最佳答案
简短回答:不会。磁盘空间会稍微更大;性能不太可能提高。
长答案:
每个分区本质上是一个单独的表;每个表都有一些预先分配的空间。每个分区有 4-7MB 的“可用”空间。
分区本身并不会带来任何性能提升。 (在某些情况下,速度会稍微减慢。)
也就是说,有 4 use cases我知道如果仔细进行分区,可以显着提高速度。你没有说过任何一句话来表明你的情况就是其中之一。最常见的是“时间序列”,其中您需要删除“旧”数据。与DELETE
相反,DROP PARTITION
的好处几乎是即时的。
请描述您的数据情况 - 数据类型、架构和重要查询。如果是数据仓库应用程序,那么“时间序列”可能有用。更有可能的是Summary tables ;它们通常可以用来大大加快“报告”的速度,而不是冗长的GROUP BY
。
关于mysql - MySQL和mariadb数据库的存储和查询效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53974471/