如何使用ASP Classic和MySQL避免DB重新查询分页?

时间:2013-03-22 10:58:28

标签: mysql asp-classic

我有一个页面,用于查询数据库中的产品,然后以30个项目的页面显示。当我导航到下一页时,应用程序重新查询数据库并显示页面号。 2等等。

如何避免此数据库重新查询?我可以将结果存储在某个地方吗?我们正在谈论1500-2000行/查询,当我们有400-450个在线用户时,我们的专用服务器以100%的CPU容量运行。

2 个答案:

答案 0 :(得分:0)

您是否有足够的内存来预加载整个“目录”(在应用程序级别存储中),然后让SQL返回所有结果,但只存储索引(在每个Session中)。 像这样的东西:     在应用程序启动时:创建我的只读应用程序级缓存     在搜索上:SQL返回所有结果(我假设您必须执行SQL,因此您可以检查业务条件     结果:构建映射到应用程序缓存的索引列表     在显示页面上:从应用程序缓存中读取并显示适当的范围

如果您没有足够的内存,那么“结果”表可能会提供一些优化:在每个会话的基础上,将整个查询结果缓存到“扁平化”表中,以避免潜在的昂贵(业务逻辑 - 重)产品查询。您必须小心检测查询何时更改,以便您可以丢弃缓存,还有一些服务器端逻辑来清除旧的过期搜索。

答案 1 :(得分:0)

正如我所说,我要求解决的主要原因是避免CPU过载。服务器在线只有500-600个用户被堵塞100%似乎不自然。我发现了优化表MySQL命令,它可以在MyISAM表上运行,它完全解决了这个问题。执行命令后,CPU使用率立即下降到10-12%。

因此,如果有其他人在运行使CPU过载的MySQL应用程序,您应首先尝试优化表命令和此处描述的其他维护任务http://dev.mysql.com/doc/refman/5.5/en/optimize-table.html