Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(太)频繁的MySQL查询?_Mysql_Performance - Fatal编程技术网

(太)频繁的MySQL查询?

(太)频繁的MySQL查询?,mysql,performance,Mysql,Performance,关于如何存储用户生成的数据,我面临着一个进退两难的境地,因为他们经常这样做 你看,该程序的总体思路是用户回答MPC问题,并存储和显示他们的进度-即,正确回答的问题越多,用户得到的分数越接近100%,在数据库中随着每个答案以及屏幕上更新。请注意,用户这样做的时间越长,他们的回答速度就越快,直到每1,5秒回答一次为止。这并不罕见 您可以看到这是如何增加查询数量的,而不考虑其他用户 现在我想到了定期更新(每X个问题,或每Y分钟,等等),但这会带来客户关闭会话并有效销毁我非常希望拥有的数据的风险。我还想

关于如何存储用户生成的数据,我面临着一个进退两难的境地,因为他们经常这样做

你看,该程序的总体思路是用户回答MPC问题,并存储和显示他们的进度-即,正确回答的问题越多,用户得到的分数越接近100%,在数据库中随着每个答案以及屏幕上更新。请注意,用户这样做的时间越长,他们的回答速度就越快,直到每1,5秒回答一次为止。这并不罕见

您可以看到这是如何增加查询数量的,而不考虑其他用户

现在我想到了定期更新(每X个问题,或每Y分钟,等等),但这会带来客户关闭会话并有效销毁我非常希望拥有的数据的风险。我还想到了Cookie,它保存每次登录时读取的数据,但这总是意味着不会存储用户的最后一次会话。另外:对cookie大小和数量的限制使它变得毫无价值,因为我的程序提供了大量不同的主题,MPC问题就是针对这些主题创建的

所以问题是:我如何才能在不丢失数据的情况下尽可能高效地进行查询?这类问题是否有一种常见的解决方法?我的意思是,统计或数据库密集型网站如何做到这一点

(另外:80%的程序是JS(Jquery)。只需输入'。)


我很好奇会有什么解决方案或想法

我真的不认为MySQL会成为这里的瓶颈。与服务器上的所有轮询请求一样,seam将比MySQL请求慢很多,除非您的SQL调用结构非常糟糕。如果这真的成为一个问题,我会扩大规模(e.x.MySQL集群),而不是在这里进行优化,因为只要你想保留所有数据,同时还想使用MySQL,你就会被即时存储所有数据的方法所困扰。只要我的2美分。你可以在登录时安全地加载用户历史记录,并将其保存在服务器端缓存中,如果你知道它是不可变的,则无需再次查询。分数的更新可以直接存储在缓存中,服务器上的异步作业将其存储在数据库中,以避免在峰值时刻等待很长时间。最后,如果要在单个表中更新不同用户的记录,请选择InnoDB(或
XtraDB
),而不是
MyISAM
。然后你只需要硬件来满足你的需求,如果它的规模超过了一个像样的服务器的能力,那么可能是在集群中。但是,如果你真的不需要数据,当然你并不特别担心用户的欺骗,a(可能偶尔同步一次)也会大大降低负载。Wrikken,你能帮我解决这个问题吗,更详细地说?我知道你和我一样是荷兰人,所以我很想亲自通过电子邮件,甚至Skype与你通信。如果你也喜欢的话,就是这样。我觉得这并不像听起来那么难(我已经找到了一些专门帮助本地存储大块数据的插件),但我担心的不是易用性,而是可靠性——正是因为我不熟悉它。