1

这只是为了解释我认为它可能是如何工作的:假设 Web 服务器需要来自 10 个表的数据。最终将在客户端显示的数据需要某种格式,可以在数据库或 Web 服务器上完成。假设获取一个表的原始数据的时间是 1 秒,而获取格式化数据的时间是一张表是 2 秒(格式化一张表的数据需要一秒钟,并且可以在 Web 服务器或数据库上轻松完成格式化。)

让我们考虑以下通信情况:

情况1:

for(i = 0; i < 10; i++)
{
    table[i].getDataFromDB(); //2 sec - gets formatted datafrom DB, Call is completed before control goes to next statement

    table[i].sendDataToClient(); //0 sec - control doesn't wait for completion of this step
}

案例二:

for(i = 0; i < 10; i++)
{
    table[i].getDataFromDB(); //1 sec - gets raw data from DB, Call is completed before control goes to next statement

    table[i].formatData(); //0 sec - will be executed as a parallel process     which takes 1 sec to complete (control moves to next statement before completion)
}

formatData()
{
    //format the data which takes 1 sec
    sendDataToClient(); //0 sec - control doesn't wait for completion of   this step
}

假设将数据从 Web 服务器发送到客户端不需要时间(0 秒),因为这两种情况都是恒定的。

情况1,每张表的数据会在客户端每隔2秒显示一次,20秒后会在客户端显示完整的数据。

在情况 2 中,第一个表的数据将在 2 秒后显示,但接下来 9 的数据将在 3,4,...,11 秒显示。

哪种方法是正确的,它是如何在流行的 Web 服务器和数据库之间实现的?

4

1 回答 1

2

流行的 Web 服务器和数据库可以以任何一种方式工作,具体取决于应用程序的编写方式。

也就是说,除非您遇到极端情况,否则您可能会发现性能影响足够小,以至于您的主要关注点应该是代码可维护性。从这个角度来看,通常首选在应用程序(在 Web 服务器上运行)中格式化数据,因为通常更难维护在数据库级别实现的业务逻辑。

许多 Web 应用程序框架也会为您完成大部分格式化工作。

于 2016-01-08T06:51:12.200 回答