基本上,我正在为我的应用程序开发REST API。我正在研究服务器性能,但我找不到有关拆分数据库的信息。通过使用MySQL的多个服务器(如果可以将其存储在共享文件系统上)共享单个文件系统会更好吗,或者我应该升级当前服务器还是在不同数据库上存储不同的信息(例如用户)关于数据库1和另一个盎司的信息,如果它减慢了吗?如果有人有更多关于提高数据库性能的信息,或者我可以阅读它的内容将非常感谢。提前谢谢。
答案 0 :(得分:2)
"拆分"您可以将主表的某些行放在一个物理服务器上,有些放在其他服务器上。千分之一只有一个系统需要这种缩放。
"分区"是您将单个表拆分为多个"子表"就像一张桌子一样。很少有用例(我只计算4个),这可以带来任何好处。所有子表都存在于同一台服务器中。
在相同物理服务器上拥有多个MySQL实例会增加复杂性,而可能会增加一些性能,但不太可能。
在不同的物理服务器上拥有多个MySQL实例,但共享相同的数据 - 请不尝试; MySQL 不知道如何以这种方式共享自己的数据。
使用复制可以执行任意读取缩放。这有点复杂。这是一种常见的方法。但它只处理更多阅读的应用程序。而不是写''。
Galera Clustering为您提供一些写入缩放。
单个实例可以处理大量传入请求(来自Web服务器或其他类型的客户端)。这些客户端可以分散在多个服务器上。即扩展客户端,即使没有扩展MySQL,可能对您有用。
使用负载均衡器/代理服务器/等,您还可以让多个客户端与多个MySQL服务器通信(读取Slaves / Galera节点/分片服务器/等)。
上述许多技术可以组合在同一个系统中。
底线:它闻起来像你还不知道你是否需要任何缩放。当你到达那一点时,请提供有关该应用程序的更多信息,以便我们可以用更少的手挥动来讨论各种选项。
答案 1 :(得分:2)
我99.999%肯定所有这些话只是说"过早优化"。除非你有超过20GB的数据(或50GB或100GB ......基本上,很多),使用一个数据库,一旦开始减速,看看不同的选项(分片等)。
不用担心,在没有引入高级数据库策略的情况下,您还有很多其他事情可以让您忙碌:)