Microsoft Office ACCESS作为网站数据库的弊端

现在网上绝大多数网站都是ACCESS+ASP/ASP.NET的形式,因为ACCESS结构简单容易处理,而且也能满足多数的网站程序要求。
ACCESS是小型数据库,既然是小型就有他根本的局限性,以下几种情况下数据库基本上会吃不消:
1 数据库过大,一般ACCESS数据库达到50M左右的时候性能会急剧下降!
2 网站访问频繁,经常达到100人左右的在线。
3 记录数过多,一般记录数达到10万条左右的时候性能就会急剧下降!
(注:以上3条只是我们多年以来的经验结果,并不只绝对值,具体视情况不同浮动较大)

ACCESS论坛(如动网)大了以后就很容易出现数据库方面的问题,当你的论坛数据库在30M以上,帖子5万左右,在线也在100人左右的时候,你的论坛基本上都在处理数据库上花时间,这个时候很可能就会出现数据库吃不消的情况。
一般症状是所有涉及数据库的页面,突然运行都慢的出奇(执行时间达到5秒以上甚至几十秒),涉及HTML和纯ASP运算的页面都正常,等过一段时间(约10分钟或更长)以后又突然恢复。这个时候你可以用一般ASP探针测试一下,如果服务器的运算时间正常,而你的帖字量又比较大,就是数据库方面的问题了。
解决方法:
由于这是ACCESS本身的局限性,所以解决的方法除了减少数据量和更换大型的数据库论坛以外也没什么好办法,也就是现在常说的论坛危机,也是大型的论坛都不是ACCESS的原因。我们推荐以下方法:
1 临时解决办法:定期删除多余的数据、压缩数据库,限制论坛灌水,甚至限制论坛注册。如果是动网论坛,可以使用论坛自带的分表储存功能,会有较好的效果
2 比较长远办法:更换论坛和数据库,一般都采用动网sql商业版本+MS SQL Server 的方案来解决,不过这个需要比较大的投资。因为ms sql server 2000和ACCESS相比需要更多的资源,光是占内存上,就可以达到每一个在线1M以上的程度,如果你的SQL论坛有100人在线就会吃掉服务器至少150M以上内存。(from:

http://hi.baidu.com/sm1860/blog/item/dfcb32c6b6e13c1a9d163d50.html)

 

      Access数据库长时间使用后容易出现数据库过大、数据库损坏等现像,微软的Office软件中Access是带有修复和压缩功能的.

 

Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。(from: http://database.ctocio.com.cn/tips/395/7631395.shtml)

 

微软公司出品的ACCESS数据库是一种小型数据库,其设计之初是定位在数据量很小的应用环境,也就是说大约小于30M的应用环境。

 

第一大类:服务器CPU和内存大量占用问题(from: http://bbs.blueidea.com/thread-2708309-1-1.html)
当您的站点或者论坛数据库使用ACCESS数据库在20M以上、或者数据库数据达到几千条、或者同时访问网站的人数是数十人,ACCESS数据库就常常会出现各类损坏,导致asp等程序无法继续运行,服务器资源被锁死。
相关的微软技术说明链接:
http://www.microsoft.com/china/msdn/library/data/sqlserver/sqlbackend.mspx?mfr=true
其中微软网站网页内的原文:
Access 最多支持 255 个并发用户,这并不适合作为企业级数据存储解决方案。在生产环境中,仅仅20个用户通过网络同时使用 Access 数据库时就常常会遇到严重的性能问题以及数据被损坏的问题。(备注:微软都说不行了,难道还有其他办法?)
相关内容的动易公司的技术表述链接:
http://www.powereasy.net/Products/1984.html
其中动易公司网站网页内的原文:
Microsoft Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。
根据微软的技术描述,我们的解决方案如下:
access换ms sql:
您必须更换ACCESS数据库为 MSSQL数据库,使用MSSQL数据库的站点的稳定性会高于使用ACCESS数据库站点10倍以上。为了帮助您,我司可以提供MSSQL30M一个月的免费使用。例如:动网论坛访问ACCESS数据库变大以后,一般都采用动网sql商业版本+MSSQL 的方案来解决,网上也有access动网论坛转mssql的免费方法,客户可以搜索试验一下。
临时解决方案:
1、定期删除多余的数据;
2、保留千余条数据;
3、压缩数据库;
4、限制论坛灌水;
5、甚至限制论坛注册。
6、如果是动网论坛,可以使用论坛自带的分表储存功能,会有较好的效果。
临时解决方案不能保证网站可以长期稳定运行,即使您的程序没有任何问题。由于access的限制,您的网站还是会不断的出问题。如果access可以替代mssql,微软如何生存?:)
备注:有一个或多个ACCESS数据库在多次读写过程中损坏,微软的MDAC系统在写入这个损坏的ACCESS文件时,ASP线程处于BLOCK状态,结果其他线程只能等待,IIS被死锁了,全部的CPU时间都消耗在DLLHOST(ASP进程)中。
参考解决办法: 压缩和修复您的数据库
下载数据库文件--[如果是.asp的扩展名,请改为.mdb的扩展名]--用ACCESS打开--选择工具--数据库实用工具--压缩和修复数据库--[改回.asp的扩展名]--上传覆盖原来数据库文件。
转自:http://www.sinojet.com/error/webclose/

posted @ 2009-07-26 15:10  emanlee  阅读(1635)  评论(0编辑  收藏  举报