我有一组数据,GUI用于位置和东西,这些位置也存储在MySQL中。每次数据发生变化时,它都会反映在服务器上。
然后,如果我想像jquery(或javascript,我不知道)那样频繁更新MySQL,跟踪“mousemove”动作,即向服务器发送请求,为每个“mousemove”更改MySQL中的值,它有多“重”,尤其是当多个用户使用同一台服务器时?
什么是更好的解决方案?我想等待3秒直到动作完成,然后如果没有动作,则向服务器发送请求。
虽然有多人没有使用我的服务器,但这总是让我感到担心,阻碍了我的进步。请帮忙。
答案 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(你)自己服务器的一种可靠方式。
一些有用的提示。
尝试批量记录事件,即。记录客户端发生的事件,超过阈值后,向服务器发送请求以记录该批次。
不要将您的主应用程序服务器用于此类日志记录,因为这是 - 等待它 - 日志记录,您应该使用单独的服务器来维护日志。 / p>
Relational DB
中。几乎所有大公司都使用flat DB
(NoSQL
)来存储此类信息。relational DB
,那么在INSERT
使用Transactions
时。