Ms access 针对IIS 7、Microsoft Access和经典ASP的最高效ADODB连接

Ms access 针对IIS 7、Microsoft Access和经典ASP的最高效ADODB连接,ms-access,asp-classic,ado,adodb,Ms Access,Asp Classic,Ado,Adodb,我正在管理一个用经典ASP编写的Intranet站点,运行在Windows Server 2008上的IIS7中,使用Microsoft Access作为数据存储切换到功能更强大的数据库不是一个选项,也不是切换到.NET 每个页面对数据存储进行多次调用,以填充各种视图等 随着网站流量的增长,我们遇到了页面响应时间方面的问题,一个可能的原因在于数据存储连接的效率 对于这种类型的设置,最有效的ADO连接类型是什么?我们的一些网站也有类似的问题。所有内容都是数据库驱动的。我们使用SQL Server,

我正在管理一个用经典ASP编写的Intranet站点,运行在Windows Server 2008上的IIS7中,使用Microsoft Access作为数据存储切换到功能更强大的数据库不是一个选项,也不是切换到.NET

每个页面对数据存储进行多次调用,以填充各种视图等

随着网站流量的增长,我们遇到了页面响应时间方面的问题,一个可能的原因在于数据存储连接的效率


对于这种类型的设置,最有效的ADO连接类型是什么?

我们的一些网站也有类似的问题。所有内容都是数据库驱动的。我们使用SQL Server,在显示网页时尽可能少地往返数据库。我们开始担心频繁使用的网站会不断访问数据库,并对网站的建设方式进行了一些修改

我们最终用静态包含文件替换了大约70%的数据库驱动内容。我们将网站内容数据分为三组

未更改的静态内容 很少更改的半静态内容 数据库驱动的内容 我们用include文件替换了静态内容。如果客户想要改变,他们告诉我们,我们是收费的


我们将半静态内容分类为很少更改但客户可以使用后端界面更改的数据。在本例中,我们还使用了静态include文件。在对数据库进行更改之后,我们运行了一个对用户透明的静态数据创建小部件,该小部件基于数据库更新将静态数据重新创建为include文件。下次调用页面时,它将使用新构建的include文件。

我不确定您是否可以通过使用不同的ADO类型获得性能。我认为这更多地与数据库的大小和结构有关

我的申请也遇到了类似的麻烦。虽然我已经为我的客户开发了很多很多应用程序,但没有多少应用程序拥有庞大的用户群。最近我建了一个,天哪,我得学一两样东西才能让它更有效率

这里有几件事要考虑,如果你还没有考虑到的话。有些可能对您来说有点基本,但对其他人也很有用:

1索引或全文索引-为了加快我的数据库,我在我查询的列中添加了索引,这大大加快了我的查询速度,但稍微减慢了插入的速度。我还在搜索多个单词的列中添加了全文索引,这样我就可能丢失速度非常慢的LIKE/IN子句

2规范化或非规范化-我的一个查询使用联接和子查询搜索了16个表,结果是速度慢、体积大且容易混淆。我通过创建一个非规范化的表来解决这个问题,该表包含搜索所需的16个表中的所有可用数据。因此,在全文索引和非规范化索引表的帮助下,我的查询只需几行,速度非常快。在使用非规范化表之前,必须首先了解规范化表。对我来说,这是一个正确的情况,你可以打破规则

3 SQL字段选择-仅选择SQL查询中需要的字段。这是一个简单的错误,但仍然可以犯。例如,如果不需要返回所有列,请不要从myTable中选择*,如果您只需要这些列,请执行更精确的操作,例如从myTable中选择id、fname

4数据库清理-我不确定访问权限,但在MYSQL中,您可以使用优化查询来清理数据库,该查询会修复数据库中的任何缺口,有时会频繁插入和删除大量数据。您还可以使用EXPLAIN,它详细解释您的查询,例如计时器、使用的索引、使用的行和返回的记录


有很多方法可以获得DB性能。如果您在谷歌上搜索数据库优化或数据库调优,您应该会找到一些好的阅读资料。

我怀疑您是否能够在不使用SQL Express取代MS Access的情况下解决您的问题。经典ASP能够处理比您的intranet多得多的内容,但访问不是。我很感激,但切换不是一个选项,我只是试图尽可能多地利用我们现有的内容。我想知道您所说的连接类型到底是什么意思。显然,最有效的应该是最原生的,即Microsoft.JET.OLEDB提供商。您还提到了什么,您实际上是在谈论要使用的游标类型吗?使用OELDB驱动程序,设置连接的最有效方法是什么。我已经看到了使用ADO连接对象、ADO命令对象和ADO记录集对象的部分或全部的各种示例,但通常不清楚在什么情况下应该使用/不使用它们以及相关的开销。我将使用断开连接的记录集。然后您可以尽可能晚地创建连接对象,并尽快销毁它 当然,这不是一个选项,我们被问题中描述的设置所困扰。