如何避免使用ASP Classic和MySQL进行分页查询?

问题描述:

我有一个页面查询数据库中的产品,然后以30个项目的页面显示。当我导航到下一页时,应用程序会重新查询数据库并显示页面号。 2等等。如何避免使用ASP Classic和MySQL进行分页查询?

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

+0

使用外部缓存ActiveX或使用'Application'尝试缓存目的。 – VMV 2013-03-22 11:03:47

+0

不再需要。在数据库上运行一些MySQL优化命令,处理器使用率立即下降到7-10%。不知道这些命令真的做了什么。 – 2013-04-23 20:10:16

您是否有足够的内存预装整个“目录”(在应用程序级存储中),然后让SQL返回所有结果,但仅存储索引(在每个会话中)。 类似这样的: On Application开始:创建我的只读应用程序级缓存 On搜索:SQL返回所有结果(我假设您必须执行SQL,因此您可以检查业务条件 关于结果:构建索引列表映射到应用程序缓存 显示页面:从应用程序缓存中读取并显示适当的范围

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

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

所以,如果有其他人在那里运行超载CPU MySQL应用程序,你应该首先尝试在这里描述的OPTIMIZE TABLE命令和其他维护任务http://dev.mysql.com/doc/refman/5.5/en/optimize-table.html