【问题标题】:20M users in a MySQL table, how to scale it?一个 MySQL 表 20M 用户,如何扩展?
【发布时间】:2011-06-17 18:41:21
【问题描述】:

虽然我目前没有它,但我有兴趣了解如何在 MySQL 中扩展可能拥有 2000 万用户的单个表。这是你会使用分片的东西吗?可以使用哪些策略来使这种规模的单个表“可扩展”?

【问题讨论】:

  • 这些用户是表中的用户,还是表中的用户条目?
  • 这些是用户表中的 2000 万用户,而不是 2000 万用户正在使用该表。
  • 根据您的查询进行适当的索引,一个 20M(甚至 200M)的用户表没什么大不了的(如果它变成了,您相应地调整 MySQL 并购买更多 RAM)。虽然有这么大的一张桌子,但更多的是对整个应用程序的作用以及它将如何执行的问题。

标签: mysql scaling


【解决方案1】:

20M 记录通常被认为是“小”。根据记录的大小和执行的查询类型,您可能会在最底层的服务器上获得非常好的性能。

几乎所有服务器都可以将这样的数据库保存在内存中。假设一条记录占用 1024 个字节,包括索引。这是一个相当大的记录,但 2000 万行仍然只有 20Gb,这完全适合普通服务器的 RAM。

虽然您的数据库适合 RAM,但查询可能会非常快。

但无论如何,您都需要考虑访问模式是什么。

你有

  • 非常高的写入速率 - 每秒超过 100 个事务?
  • 大量的硬查询/报告?

如果这两个问题的答案都是“否”,您可能根本不需要特殊设备。

当然你不想分片。它很复杂,会使您的应用程序变得非常复杂,并且需要大量的开发人员时间,最好将其花在功能上(您实际上可以将其出售给客户)

为了提高大数据的性能,按照大致的优先顺序,您希望:

  • 购买更好的硬件(在合理范围内)
  • 减少需要存储的数据量
  • 使用水平分区
  • 使用垂直分区/功能分区
  • 获得更好的数据库引擎,可以更有效地使用现有硬件(可能的示例:Infobright、Tokutek)
  • Shard(你真的不想这样做!)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 2019-10-19
    • 1970-01-01
    • 2013-04-11
    • 2014-02-23
    • 1970-01-01
    相关资源
    最近更新 更多