万物都是平等的,并且以最简单的形式,哪个更快?
1.)调用Web服务方法
2.)调用数据库

例如,假设您有一个简单的Web服务,该服务仅返回以X时间计算的整数。您还有一个数据库,当以正确的方式查询该数据库时,它也需要X倍的时间来计算答案。 (因此,两种情况下的计算时间都相同)在两种情况下,为简单起见,假设两个方向的数据量相同,例如,单个32位整数。

到目前为止,Web服务和数据库的计算时间完全相同。

该环境是1个应用程序服务器(该应用程序所在的位置)和1个同时包含Web服务和数据库的其他服务器。除了应用程序重复调用Web服务或数据库外,环境中没有其他事情发生。 这全部都在一个局域网中,因此任何网络延迟都是相等的。

从应用程序(对数据库的调用或对Web服务的调用)会更快?

我想我要隔离的是重量级的。建立,打开,关闭,拆除数据库连接的结果最终会比Web服务慢吗?还是一样?另外,如果还有其他事情,例如解析Web服务的结果,它们如何影响速度?

最佳答案

O(1)不涉及任何时间长度。单个操作在Web服务上可能花费.001毫秒,而在数据库中则花费100秒,并且它们都可能使用O(1)函数:
http://en.wikipedia.org/wiki/Big_O_notation

很难知道您在问什么。如果您要问访问本地数据库通常比通过Internet访问类似服务要快,那么我希望答案通常是本地数据库会更快。通过Internet调用Web服务会产生大量开销,并且通过Internet的通信相对较慢。埃文在一台速度较慢的计算机上,一个数据库每秒可以执行数千个简单查询。与之相反,通过Internet进行访问,您很幸运每秒可以收到50次往返请求,甚至不考虑在服务器上执行请求的操作所花费的时间。

如果您要询问网络上的服务器是否可以通过避免使用数据库并直接计算结果来更快地为数据提供数据,那么答案就取决于它了。如果可以在独立函数中轻松计算数据库中的数据,则在这种情况下对数据库的调用会增加不必要的开销。这个问题的答案实际上与“Web服务”没有任何关系。在函数中计算答案或使用数据库查询访问答案是否更快?就像我说的那样,答案将取决于您必须使用的特定功能的复杂性,并权衡其计算时间与直接从数据库访问答案(或答案的一部分)的开销。

简而言之,问题的答案取决于您要问的是什么。知道您为什么要问这个问题也可能会有所帮助。我怀疑真正的答案是,这可能不是您需要担心的,不是真正的实际问题,除非您有需要优化的特殊情况。

如果您担心网络服务和数据库都处于局域网中时的速度比较,那么我很确定数据库的开销比网络服务要少。应用程序通常会维护与db的有状态连接,而对Web服务的请求则是通过http进行的,这是无状态的,开销相对较高,并且速度较慢。不过可能是错误的。最好的答案是启动一个简单的Web服务,进行查询,以及(1)测量使用这两种方法检索结果所需的时间,并进行比较,和/或(2)创建一个可打开大量线程并承担一些负载的应用程序测试。

一个警告:如果您的应用程序无法保持开放连接或无法访问与数据库的连接池,则替代数据库的速度可能会较慢。最初创建数据库连接可能相对较慢。但这不应该成为现实,因为您应该编写应用程序,以便始终保持打开的连接。

关于database - 数据库和Web服务调用之间的速度差异是多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/706712/

10-11 05:25
查看更多