同步与asynchronous数据库访问

我想开发一个可能有数千个函数和数据库调用的复杂游戏。

我想知道是否真的有必要在asynchronous做我的数据库查询。 这是一个代码的痛苦,我所有的function将需要使用callback,而不是干净的return方法。 这是一个正常的方法?

考虑到MySQL数据库一次只处理一个查询,是否将这些调用以asynchronous方式进行编码呢?

除非Node.JS最近发生了很大的变化, 否则几乎不得不使用asynchronous数据库访问来进行扩展,因为所有用户请求都将在单个线程上执行,并且同步等待数据库将会降低性能。 如果一个用户做了一个缓慢的操作,所有其他用户将不得不等待,直到完成。

Node.JS实际上是为asynchronous事件驱动的stream而构build的,与其解决它相比,您将获得更好的性能。

asynchronous请求不会比同步请求更快,不pipe你如何做,他们仍然做同样的事情。 唯一的变化就是阻止你的要求。

当你使用同步时,请求的方法将停止执行,等待请求的返回,只有当这个请求结束时它才会继续执行。 虽然使用asynchronous请求时,不需要等待请求完成,但可以继续,完成后将调用callback。

另一件事是,通常数据库是应用程序对dbms进行大量调用时的瓶颈,因为您可能要考虑使用缓冲来减less从dbms加载。

查询将在MySQL中的数据库级别排队。 如果您可以考虑使用MongoDB来处理您的一些数据,那么有更多的select。

像Nitzan一样,你必须知道“asynchronous请求不会比同步请求更快,不pipe你如何做,他们仍然做同样的事情。

没有人谈论过,但是如果有大量的用户和大量的请求,你有其他的解决scheme来限制数据库访问:

创buildcaching文件

并通过用户操作或CRON任务来更新它们。

  • 用户信息
  • 用户提醒
  • 用户操作
  • 用户清单…

库存的数据库过程

对于一些经常性的请求,你可以在MySQL中存储它们。 这些将比用户请求执行得更快。

数据库引擎的速度+传输时间将几乎相同。 问题是,asynchronous调用不会阻止调用者。 因此,asynchronous拱是任何需要高度响应其他input的“实时”系统的方式。 (比如应该总是对人类非常敏感的游戏。)