MySQL 和 mariadb 数据库中的存储和查询效率?

Storage and query efficiency in MySQL and mariadb database?

我不熟悉在非常大的数据库中进行查询。我想知道将一个非常大的数据 table 分成几部分是提高还是降低了存储效率和查询速度。例如,如果我有一个非常大的数据 table,其中的信息价值一年,有 3 亿行和近 30 列,将它分成 12 个月还是保持原样更好?它会提高效率或存储,还是 none?

简短回答:否。磁盘 space 会稍微 大一些 ;性能不太可能提高。

长答案:

每个分区本质上都是一个独立的table;每个 table 都有一些预先分配的 space。每个分区有 4-7MB "free" space。

分区本身并不会带来任何性能提升。 (在某些情况下,它会稍微放慢速度。)

也就是说,据我所知,有 4 个 use cases 分区可以显着加快分区速度。你没有说任何话来表明你的情况就是其中之一。最常见的是"time series",其中需要删除"old"条数据。好处来自 DROP PARTITION 几乎是瞬时的,而不是 DELETE.

请描述您的数据情况 -- 数据类型、架构和重要查询。如果它是一个数据仓库应用程序,那么 "time series" 可能会有用。更有可能的是Summary tables;它们通常可以用来大大加快 "Reports",而不是冗长的 GROUP BYs.