1、服务器资源消耗很低,但是涉及Access数据库的页面访问非常缓慢,最终无法打开;
2、重启IIS后,ASP + Access页面能正常访问一段时间,但是过了一会又无法访问;
3、用软件查看到进程中无数被w3wp.exe 锁定的Access数据库文件;
4、部分客户来电:之前在XXX运行正常,在你们这里怎么经常Access堵塞?
……
问题分析:
1、ASP + Access搭配使用,简单方便,因此成为普通网站的首选;但Access始终是桌面级数据库,无法经受大量数据和频繁使用的考验。
2、在服务器上,可能有几百个站,每个站又可能有几个Access数据库,因此短时间内对Access数据库的查询、修改、删除等操作将可能非常密集;
3、access的并发连接一般只允许四个以内,ASP每次打开Access数据库,都需要占用一个并发,使用完后再注销。如果某个页面在短时间内请求很频繁,数据库很大或设计得不合理,就会长时间霸占并发连接,导致别的查询都排队等待,直到产生堵塞。
4、由于MS Access的数据库结构,对添加后删除的数据,数据库不进行压缩和清空处理,依然保留原来的空间,因此导致了数据量没增加多少,但数据库越来越大!从而导致ACCESS性能严重下降。
……
解决办法:
1、优化程序代码:
(1)一些程序员习惯每次查询数据库都用“select * from tabename...”,但是select 出来的数据,只用那么一个字段,造成了巨大的浪费;
(2)尽量不使用“保守式锁定,开放式锁定 和 开放式批更新”,除非必须使用才能完成功能;
(3)打开数据库之后,记得尽快关闭数据库,避免长期占用资源!
(4)优化程序代码,是一项耗时的工作,特别是虚拟主机用户,客户的站点无数,不可能一个一个检查客户的代码。
2、压缩/修复数据库:
(1)找到大的数据库,打开,并进行 压缩/修复,这样,对那种数据量变化很大的数据库很有效,缺点是一般服务器上都没有安装Access软件,所以只能下载下来操作,操作性极差。
3、用软件批量压缩:
(1)最方便的,就是使用软件进行批量压缩/修复,无需安装Access软件,直接上传软件,即可将所有的数据库统统压缩完毕!
(2)护卫神Access批量压缩软件,只有136K,用最小的资源消耗,压缩MS Access 2000、MS Access 2002/2003数据库,轻松解除批量压缩的麻烦!