用于SQL Server的MySQL或PostgreSQL集群和高并发?

时间:2012-12-23 18:57:27

标签: php mysql postgresql

前一段时间,我创建了一个具有很高并发性的REST服务。

即使在SQL Query Optmization之后,我开始担心服务的MySQL数据库服务器,这让我有更大的思考时间窗口。

服务:

  • 用于负载平衡的多个Apache服务器,用于处理高并发性的NGINX反向代理
  • PHP操作码缓存和Memcached数据缓存
  • 在64位操作系统上使用InnoDB Tables模式的一个MySQL数据库服务器
  • SQL查询存储过程

在相对较短的时间内我可能遇到的问题是:

  • MySQL数据库服务器达到数TB TB数据的存储限制
  • MySQL DB Server达到其专用CPU / RAM / TCP的最大并发查询数

我找到了什么解决方案,我正在考虑:

  • MySQL Clusters,但看起来它不支持Integrity(FK?)
  • 用于负载平衡的多个复制MySQL服务器(缺点:过度存储)
  • Sharding(缺点:在这一点上,对我而言,当我需要最快的解决方案时,它看起来很复杂)
  • 切换到PostegreSQL并对此特定SQL Server进行更多调查

对于卸载MySQL服务器,您最好的建议是什么?如果我什么都不做,它最终会崩溃。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以考虑的其他解决方案。

您可以使用池服务,这些服务是具有最高需求优先级的一些查询。例如,在stackoverflow中,大多数想要使用其API的人都会询问最新的问题。所以第一个人要求他们从他们的数据库中得到它的最新问题。但只要它是一个高优先级的查询,它就会被添加到池中,因此任何需要它的人都可以直接从池中检索它,并且从服务器请求它不会花费太多时间。 / p>

关于池的实现,这是另一个要讨论的标准。

另一个解决方案是: 如果你有一个非常大规模的数据集群并且你的select语句增加了很多,那么你可以使用hadoop中的hdfs并在你想要的任意数量的服务器上应用hadoop。这种方法被Facebook,linkedIn和yahoo使用。