【发布时间】:2021-04-03 10:02:11
【问题描述】:
最近我正在阅读有关在 MySQL 数据库中管理庞大数据集的不同方法。
说实话,目前我很困惑。我阅读了有关上述问题的一些概念,但我不知道它们之间的关系如何?
请看看这些:
- 分区 - 这是一个插件
- 聚类 - 我猜是命名为 NDB
- 分片 - 我认为这是一个概念,没有什么可实施的
场景是在 MySQL 中存储/维护/搜索大量数据(假设一个表有 50 亿行)。所以我们必须拆开数据集,但是怎么做呢?
我有几个问题:
- 以上三项之间有多少重叠?
- 在分区中,所有部分都将存储在同一台机器(服务器)上?或者它们可以保存在不同的机器中?
- 如何检测数据存放在哪个分区? (以便相应地查找数据)
- 我知道分区是针对“表”,集群是针对“数据库”吗?
- 通过分片,我们将数据复制到不同的服务器中,或者我们将在不同的服务器中拥有不同的数据?另外,是发生在“表”层还是“数据库”层?
- 不同部分(集群/分区)在需要时如何相互看到?就像我们需要在整个表上有一个
join子句一样。假设数据被分成不同的分区/机器。 - 要使用集群,是否需要安装不同版本(version)的 MySQL?普通版不支持吗?
无论如何,我已经阅读了 3 多天,但主要概念对我来说仍然模棱两可。
【问题讨论】:
-
仅供参考“购买与发明”singlestore.com/comparisons/mysql
-
这个问题有很多“重点”问题(以及很多误解);我正在投票重新开放。
-
问题归结为“比较和对比”分区、集群和分片。然后提供了一些需要讨论的方面。
-
聚类来自 NDB 或 Galera。最好在两者之间分开。分区内置在 InnoDB 中。要进一步讨论您的 5B 行表,请开始一个新问题并解释您拥有的数据类型(数据仓库、时间序列、传感器数据、位置跟踪等);我们可以“专注”于您的类型数据的最佳解决方案。
-
是的,您可以混合搭配这 3 个概念,也许可以任意组合。但通常,一个应用程序不需要超过一种技术。
标签: mysql sql performance