mysql前面的代理用于消除冗余

mysql前面的代理用于消除冗余,mysql,database,architecture,proxy,Mysql,Database,Architecture,Proxy,我试图在MySQL服务器前面实现一个代理层,它将捕获冗余的SQL查询,并只将它们发送一次到服务器。换句话说,我有许多PHP、Perl客户端,它们位于不同的web节点上,与MySQL通信,并且经常重复相同的SELECT查询。当流量上升时,MySQL通常会下降 问题是——您是否知道有任何开源或商业工具可以提供帮助?我试过了,但似乎没什么帮助。您可能需要查看和 这里还有两条建议 建议1建立一个集群 如果您的数据都是InnoDB,那么您应该尝试将HAProxy与之结合使用。您可以跨集群中的所有服务器(包

我试图在MySQL服务器前面实现一个代理层,它将捕获冗余的SQL查询,并只将它们发送一次到服务器。换句话说,我有许多PHP、Perl客户端,它们位于不同的web节点上,与MySQL通信,并且经常重复相同的SELECT查询。当流量上升时,MySQL通常会下降

问题是——您是否知道有任何开源或商业工具可以提供帮助?我试过了,但似乎没什么帮助。

您可能需要查看和

这里还有两条建议

建议1建立一个集群

如果您的数据都是InnoDB,那么您应该尝试将HAProxy与之结合使用。您可以跨集群中的所有服务器(包括写主机)实现负载平衡

建议2通过MySQL复制到1个或多个DB服务器来设置集群

使用HAProxy在读从机之间实现读负载平衡

如果您有预算,并且您的数据相对较少,

您可能需要调查和分析

这里还有两条建议

建议1建立一个集群

如果您的数据都是InnoDB,那么您应该尝试将HAProxy与之结合使用。您可以跨集群中的所有服务器(包括写主机)实现负载平衡

建议2通过MySQL复制到1个或多个DB服务器来设置集群

使用HAProxy在读从机之间实现读负载平衡

如果您有预算,并且您的数据相对较少,则有两条建议:

MySQL代理 这是一个来自MySQL的前端代理,据我所知,它可以满足您的需求 vtocc YouTube mysql环境中使用的vitess项目也做了类似的事情。查询整合:能够将正在进行的查询的结果重用到查询仍在执行时收到的任何后续请求。 两项建议:

MySQL代理 这是一个来自MySQL的前端代理,据我所知,它可以满足您的需求 vtocc YouTube mysql环境中使用的vitess项目也做了类似的事情。查询整合:能够将正在进行的查询的结果重用到查询仍在执行时收到的任何后续请求。
很好的建议,但它没有达到我想要的效果-相同的SQL查询仍然能够同时到达MySQL两个建议都很好,但它们不能解决问题的根本原因-重复的查询将到达MySQL服务器。额外的服务器/集群将使系统更大,但不是更智能。这是一个很好的建议,但它不符合我的要求-相同的SQL查询仍然能够同时到达MySQL。这两个建议都很好,但它们不能解决问题的根本原因-重复的查询将到达MySQL服务器。额外的服务器/集群会使系统更大,但不会更智能。通常,人们会尝试在应用程序端缓存sql返回的数据来解决这个问题。使用memchached或类似的应用程序来避免重新查询数据库。问:当你说经常重复相同的SELECT查询时,是不是同一个查询请求了相同的参数,或者同一个查询请求的参数不同?这是同一个查询请求的参数相同。内置查询缓存的主要思想不是解决这个问题吗?我只是在猜测,但问题可能只是一台服务器有太多的查询。因此,请尝试其他方法,使您能够跨不同的服务器分发查询。也许是@RolandoMySQLDBA建议的方法?通常人们会尝试在应用程序端缓存sql返回的数据来解决这个问题。使用memchached或类似的应用程序来避免重新查询数据库。问:当你说经常重复相同的SELECT查询时,是不是同一个查询请求了相同的参数,或者同一个查询请求的参数不同?这是同一个查询请求的参数相同。内置查询缓存的主要思想不是解决这个问题吗?我只是在猜测,但问题可能只是一台服务器有太多的查询。因此,请尝试其他方法,使您能够跨不同的服务器分发查询。也许是@rolandmysqldba建议的那个?