2011-11-19 36 views
0

我正在管理一个用传统ASP编写的Intranet网站,它在Windows Server 2008的IIS7中运行,并将Microsoft Access用作数据存储(切换到更强大的数据库不是一种选择,也不是切换到.NET)。针对IIS 7,Microsoft Access和经典ASP的最高效的ADODB连接

每一页做多次调用到数据存储,以填充各种意见,等

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

什么是用于此类设置的最有效的ADO连接类型?

+0

我怀疑你将能够解决你的问题,而无需更换MS Access(也许与SQL Express)。经典ASP能够处理的内容远远多于Intranet,但Access不是。 – Filburt

+0

我明白这一点,但切换不是一种选择,我只是想尽可能地挤出我们尽可能多的东西。 – notreadbyhumans

+0

我想知道“连接类型”究竟是什么意思,最明显最有效的将是最原生的,即Microsoft.JET.OLEDB提供程序。你还指着什么,你是不是在谈论要使用的游标类型? – AnthonyWJones

回答

1

我们有一个类似的问题与我们的一些网站。所有的内容都是数据库驱动的。我们使用SQL Server并在显示网页时尽可能减少数据库往返行程。我们越来越担心重度使用网站会不断打击数据库,并对我们的网站如何构建进行了一些更改。

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

  1. 静态内容并没有改变
  2. ,改变半静态内容很少
  3. 数据库驱动的内容

我们替换包含文件的静态内容。如果客户想要改变,他们告诉我们,我们做了改变(收费)。

我们将半静态内容分类为很少更改的数据,但客户可以使用后端接口对其进行更改。在这种情况下,我们也使用了静态包含文件。在对数据库进行更改后,我们运行了一个(对用户透明的)静态数据创建小部件,该小部件根据数据库更新将静态数据重新创建为包含文件。下一次该页面被调用时,它将使用新建的包含文件。

+0

不幸的是,这不是一个选项,我们坚持在问题中描述的设置。 – notreadbyhumans

0

我不确定你可以从使用不同的ADO类型获得性能。我认为这与数据库的大小和结构有关。

我和我的应用程序有类似的麻烦。虽然我为我的客户构建了很多很多应用程序,但他们中的很多人并没有太多的受众。最近我建了一个,男孩,我必须学习一两件事才能使它高效。

这里有几件事情要考虑,如果你还没有。有些人可能会有点基本的对你,但对他人有用太:

1)INDEX或全文索引 - 为了加快我的数据库,我添加索引对我查询列从而加快我的查询量巨大(但是稍微减慢INSERT的速度)。我还在搜索多个单词的列中添加了FULLTEXT INDEX,所以我可能会失去速度很慢的LIKE/IN子句。

2)规范化或非规范化 - 我的一个查询使用连接和子查询搜索16个表,结果是缓慢,笨重和令人困惑。我通过创建一个“非标准化”表来解决这个问题,该表包含了我需要搜索的16个表中的所有可用数据。所以借助FULLTEXT INDEX和一个非标准化和索引表,我的查询只有几行,非常快。在使用非规格化表格之前,您必须先了解规格化表格。对我来说,这是你可以违反规则的正确情况。

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

4)DB清理 - 我不知道有关访问,但在MySQL中,你可以通过使用优化查询,清理你的数据库,其修理任何差距在你的数据库,有时频繁插入和删除大量数据的创建。您还可以使用EXPLAIN,它详细解释了您的查询,例如计时器,使用的索引,使用的行和返回的记录。

有很多方法可以获得数据库性能。如果你谷歌“数据库优化”或“数据库优化”,你应该找到一些好的读取..