由于插入查询而导致MySQL过载
由于Insert查询过载,我最近开始遇到一些严重的服务器问题。我们服务器上的所有查询都经过了优化,但由于插入查询量很大,流量再次增加,CPU的使用量也在增加 我们进行了一次插入。。对每个访问我们网站的访问者进行重复更新查询,以跟踪在线访问者以及在线用户及其所在页面 我不知道还有什么其他的方法可以完成,也不知道该怎么做才能减少服务器负载由于插入查询而导致MySQL过载,mysql,query-optimization,Mysql,Query Optimization,由于Insert查询过载,我最近开始遇到一些严重的服务器问题。我们服务器上的所有查询都经过了优化,但由于插入查询量很大,流量再次增加,CPU的使用量也在增加 我们进行了一次插入。。对每个访问我们网站的访问者进行重复更新查询,以跟踪在线访问者以及在线用户及其所在页面 我不知道还有什么其他的方法可以完成,也不知道该怎么做才能减少服务器负载 有什么想法吗?我最喜欢的处理方法是在服务器内存中缓冲访问者数据,然后每隔一段时间进行批量插入 例如,仅当X个访问者日志在内存中排队时才写入数据库,其中X可能在10
有什么想法吗?我最喜欢的处理方法是在服务器内存中缓冲访问者数据,然后每隔一段时间进行批量插入 例如,仅当X个访问者日志在内存中排队时才写入数据库,其中X可能在10到1000之间,具体取决于您的应用程序 即使发送到数据库服务器的命令仍然包含1000个insert命令,应用程序服务器和数据库服务器之间也只有一次往返。因此,您将消除管理许多不同连接的开销
此外,还可以考虑NoSQL混合文件,例如对这些数据进行弹性搜索,以消除MySQL服务器的负载。它的伸缩性非常好,可以针对索引(插入)、查询或两者进行优化
你好。这是一个非常有趣的技巧。从未想过:)。非常聪明。因此,您只需构建一个包含insert查询的文本文件,然后每隔大约200个查询运行一次?我将使用内存缓存(如memcachedb)而不是文本文件。我会使用队列数据结构将对象写入缓存。我还缓存队列大小,这样我就可以问memcachedb“我的队列有多大?”。您还可以选择同步或异步刷新队列。每次有人访问时,您都可以检查队列是否已满,并将其刷新到DB。或者,您可以拥有一个特殊的“heartbeat.php”,并拥有一个cron作业访问权限,每30秒访问一次,以查看是否需要刷新它。这样你就不会减慢任何访问者的速度。没问题,听起来这是一个必须解决的好问题,因为你的网站表现良好。玩得高兴