服务器上每隔几秒运行一次mysql命令的程度有多大

时间:2016-06-22 19:03:33

标签: javascript php jquery mysql server

我有一组数据,GUI用于位置和东西,这些位置也存储在MySQL中。每次数据发生变化时,它都会反映在服务器上。

然后,如果我想像jquery(或javascript,我不知道)那样频繁更新MySQL,跟踪“mousemove”动作,即向服务器发送请求,为每个“mousemove”更改MySQL中的值,它有多“重”,尤其是当多个用户使用同一台服务器时?

什么是更好的解决方案?我想等待3秒直到动作完成,然后如果没有动作,则向服务器发送请求。

虽然有多人没有使用我的服务器,但这总是让我感到担心,阻碍了我的进步。请帮忙。

1 个答案:

答案 0 :(得分:2)

最好有一个中间内存解决方案来减轻数据库调用的数量。例如。 Memcached。但!但!在我们开始之前,让我们有一些数字。

让我们做数学,不管吗?

您希望跟踪事件的详细信息。

| Action to be recorded       | Frequency of Occurrence  | Per user/minute avg. |
|:---------------------------:|:------------------------:|:--------------------:|
| 1. MouseMove!!! (Seriously?)|             Very Heavy!!!|                   200|
| 2. Clicks (MouseDown)       |            Medium to High|                    10|
| 3. Hover (MouseOver)        |                      High|                    50|

因此,如果对一个活跃用户进行非常粗略的球场评估,则针对特定会话触发的总events将为260/per minute

因此,让我们说10 concurrent users您的每分钟事件变为2600

这成为DDoS(你)自己服务器的一种可靠方式。

一些有用的提示。

  1. 尝试批量记录事件,即。记录客户端发生的事件,超过阈值后,向服务器发送请求以记录该批次。

  2. 不要将您的主应用程序服务器用于此类日志记录,因为这是 - 等待它 - 日志记录,您应该使用单独的服务器来维护日志。 / p>

  3. 如前所述,在服务器上,在将日志推送到数据库之前,实现内存中的日志存储。
  4. 此数据 甚至不需要存储在Relational DB中。几乎所有大公司都使用flat DBNoSQL)来存储此类信息。
  5. 如果您仍然决定继续使用relational DB,那么在INSERT使用Transactions时。
  6. 如果仅对登录的用户进行跟踪,并且您无法使用专用的内存缓存,则可以将跟踪数据存储在用户的会话中,并在阈值将记录移动到DB后再次存储