1

由于插入查询的过载,我最近开始遇到一些巨大的服务器问题。我们服务器上的所有查询都一直在优化,但是由于大量的 INSERT 查询,流量再次回升,CPU 正在最大化。

我们为访问我们网站的每个访问者运行 INSERT .. ON DUPLICATE UPDATE 查询,以跟踪在线访问者、在线用户以及他们所在的页面。

我不确定还有什么其他方法可以完成,也不知道该怎么做才能减少服务器负载。

有任何想法吗?

4

1 回答 1

2

我最喜欢的处理方法是在服务器内存中缓冲访问者数据,然后每隔一段时间进行一次批量插入。

例如,仅当 X 数量的访问者日志已在内存中排队时才写入数据库,其中 X 可能在 10 到 1000 之间,具体取决于您的应用程序。

即使您发送到数据库服务器的命令仍然包含 1000 个插入命令,您的应用程序服务器和数据库服务器之间也只会有一次往返。因此,您将消除管理许多不同连接的开销。

此外,您可能会考虑使用 NoSQL 混合,例如对此类数据进行弹性搜索,以消除 MySQL 服务器的负载。它的扩展性非常好,可以针对索引(插入)、查询或两者进行优化。

于 2013-02-11T00:56:46.413 回答