AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 8889
Accepted
gsb
gsb
Asked: 2011-12-08 07:35:37 +0800 CST2011-12-08 07:35:37 +0800 CST 2011-12-08 07:35:37 +0800 CST

MySQL 分片与 MySQL 集群

  • 772

仅考虑性能,MySQL Cluster 能否击败自定义数据分片 MySQL 解决方案?分片 = 水平分区

当我提到分片时,我正在考虑在应用层进行分片,例如,在独立的 MySQL 实例之间均匀分布记录。对于两台服务器,它可能是(key mod 2)。

mysql ndbcluster
  • 1 1 个回答
  • 16152 Views

1 个回答

  • Voted
  1. Best Answer
    Frazer Clement
    2011-12-09T06:08:09+08:002011-12-09T06:08:09+08:00

    披露:我是一名 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 更像是“自己动手”

    将分片内置到您的应用程序中可为您提供最大的扩展潜力,但会增加复杂性并限制您在跨分片查询和操作方面的灵活性。如果您的分片为时过早,那么它可能是您的一些问题的根源。MySQL Cluster 可以让您获得分片的一些好处,而不必将您的应用程序限制为仅是单分片。

    关于前面的回答,有几点说明:

    “虽然 MySQL Cluster 是 ACID-complaint,但它没有为具有复合键的数据提供合适的存储引擎。”

    MySQL Cluster 支持复合主键和辅助键。不知道什么是不“适合”的。也许之前的海报可以解释一下?

    “为了将具有相同关键特征的数据存储在一组特定的数据节点中,您可以执行以下操作:

    1. 使所有数据节点脱机,只留下那些您想要容纳具有相同关键特征的数据的数据节点。
    2. 将您的数据加载到 MySQL 集群中,该集群仅填充您选择的数据节点
    3. 使所有数据节点重新联机”

    这是不正确的。数据分布与任何时候恰好在线的节点无关。MySQL Cluster 支持各种数据分布方案以支持您描述的优化。我在这里的博客文章中描述了 MySQL Cluster 中的数据分布:MySQL Cluster 中的数据分布

    • 22

相关问题

  • 是否有任何 MySQL 基准测试工具?[关闭]

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

  • 什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

  • 组如何跟踪数据库架构更改?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve