下面是一个场景:
您有一个Microsoft数据库支持的ASP.Net应用程序,在本例中不会有任何缓存。
对于web应用程序中的每个页面,有哪些更有效:
试图将所需的所有数据压缩到一个(或几个)存储过程调用中,这些存储过程调用返回多个表,并包含所需的所有数据(保存到数据集中),
或
使每个调用分开(通过datareader读取每个调用),这取决于它在逻辑上的意义。
我问的原因是,我总是以第二种方式结束:创建连接到数据库的简单方法,并为我拥有的每个小任务获取一些数据(即填充特定下拉列表的方法,为页面的主要信息创建另一种方法,等等)。
我担心的是,当请求一个页面时会发生什么,如果我查看服务器的server,最终会有10个左右调用该单个页面请求。这是不是太过分了?在我看来,通过页面而不是任务来压缩数据收集似乎更有效。有人有这方面的经验吗?
发布于 2008-11-05 15:16:53
在启用连接池的情况下,您建议将多个DB调用合并为一个没有多大的优势(如果有的话)。获取数据没有什么问题,因为您需要使用对DB的多个调用,即使每个调用打开并关闭了一个数据库连接。这是因为在启用池的情况下,每次都不会真正打开和关闭连接。
如果您的应用程序是Windows客户端应用程序,那么如果客户机和服务器之间的网络速度特别低,那么将调用“捆绑”到一个调用中可能是有意义的。您正在使用一个web应用程序,所以这里的相关连接速度是web服务器和DB服务器之间的连接速度,这不应该是一个问题。
捆绑你的数据只是额外的工作,没有回报。
发布于 2008-11-05 15:00:25
我日常工作的很大一部分是开发一个大型WinForms应用程序,该应用程序由一个600+表server数据库支持。
这是减少网络流量的第一种方法。人们认为,只有一个凸起的信封比一个装满信封的邮袋要好。
此外,传输的捆绑数据不应与紧密耦合混淆--收集数据的SQL可以像以往一样模块化,与伞式存储的proc或视图一起轻轻绑定在一起。
发布于 2008-11-05 15:01:30
不要将数据收集按页面分组。数据和演示的耦合太紧密了。如果明天数据必须放在不同的页面上呢?
https://stackoverflow.com/questions/265379
复制相似问题