尽管我目前还没有它,但是我有兴趣研究人们如何在MySQL中扩展可能具有例如2000万用户的单个表。这是您用于分片的东西吗?人们可以使用哪些策略来使这种规模的个人表“可伸缩”?

最佳答案

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

几乎所有服务器都可以在内存中保留这样的数据库。让我们考虑一条记录占用1024个字节,包括索引。这是一个很大的记录,但是20M行仍然只有20Gb,非常适合中等服务器的RAM。

虽然数据库适合RAM,但查询速度可能非常快。

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

你有


很高的写入率-每秒超过100个事务?
很多困难的查询/报告?


如果这两个答案均为“否”,则可能根本不需要特殊设备。

当然,您不想分片。它很复杂,极大地使您的应用程序复杂化,并且需要大量的开发人员时间,而这些时间最好花在功能上(您可以实际销售给客户)

为了提高大数据的性能,以大约优先的顺序,您需要:


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

07-27 21:31