仅考虑性能,MySQL Cluster 能否击败自定义数据分片 MySQL 解决方案?分片 = 水平分区
当我提到分片时,我正在考虑在应用层进行分片,例如,在独立的 MySQL 实例之间均匀分布记录。对于两台服务器,它可能是(key mod 2)。
仅考虑性能,MySQL Cluster 能否击败自定义数据分片 MySQL 解决方案?分片 = 水平分区
当我提到分片时,我正在考虑在应用层进行分片,例如,在独立的 MySQL 实例之间均匀分布记录。对于两台服务器,它可能是(key mod 2)。
披露:我是一名 MySQL 员工,在 MySQL Cluster 上工作。
我会说 MySQL Cluster 可以实现比分片 MySQL+InnoDB 更高的吞吐量/主机,前提是:
在延迟方面,MySQL Cluster 应该比分片 MySQL 具有更稳定的延迟。纯内存数据的实际延迟可能是相似的。
随着查询变得更加复杂,并且数据存储在磁盘上,性能比较变得更加混乱。要获得更具体的答案,您需要详细描述您的应用程序和您执行的查询,以及主机数量和数据量。MySQL Cluster 最近获得了并行本地化查询执行 (AQL),这意味着尽管数据分布在多个主机上,但它可以与独立的 MySQLD 竞争。
MySQL 集群目前仅限于“分片”超过 48 台主机。Sharded MySQL 理论上没有限制。但是,对于给定的目标吞吐量,可能需要比分片 MySQL 主机更少的 MySQL Cluster 主机。
更有趣的差异是当您查看性能以外的领域时:
将分片内置到您的应用程序中可为您提供最大的扩展潜力,但会增加复杂性并限制您在跨分片查询和操作方面的灵活性。如果您的分片为时过早,那么它可能是您的一些问题的根源。MySQL Cluster 可以让您获得分片的一些好处,而不必将您的应用程序限制为仅是单分片。
关于前面的回答,有几点说明:
MySQL Cluster 支持复合主键和辅助键。不知道什么是不“适合”的。也许之前的海报可以解释一下?
这是不正确的。数据分布与任何时候恰好在线的节点无关。MySQL Cluster 支持各种数据分布方案以支持您描述的优化。我在这里的博客文章中描述了 MySQL Cluster 中的数据分布:MySQL Cluster 中的数据分布