今天之所以谈到ACC数据库方面的问题,是因为我的论坛网站(娱友在线),在最近就因为我的论坛突然数据库坏表出现错误,为避免长时间停站,我只好先恢复了8小时前的数据库备份(做站长一定要有经常备份数据的习惯),因此我开始关注数据库安全方面的问题。在之前我总以为ACC既然是微软开发的,既然被这么多网站使用,那他一定没那么多没那么容易出安全问题,即使有也不会出现在我这样的小网站里面。
新手站长要注意数据库的基本操作常识:
例如:1,备份或改名或移动数据库前一定要先停止网站访问。这跟手机内存卡一样,当系统正在往数据库里面读写数据的时候,突然中断,就会破坏数据库。
2,不要暴露数据库路径,防止被人通过工具下载:一般解决方法:伪装ACC数据库扩展名(改为非.MDB之外的格式)以及文件名特殊处理(例如文件名首字母加“#”)。
一般使用ASP代码编写的网站程序有很多都是使用的ACCESS数据库,优点是管理(ACC2003管理器)和备份(直接下载.MDB数据库文件)都很方便,使所有大都数并不是很耗资源的WAP网站都是使用这一数据库。
由于ACCESS是小型数据库,所以就有它根本的局限性:
1,数据库过大时,一般ACCESS数据库达到100M左右的时候性能就会开始下降!(例如:访问人数过多时容易造成IIS假死,过多消耗服务器资源等等)
2,容易出现各种因数据库刷写频率过快而引起的数据库问题。
3,ACC数据库安全性比不上其他类型的数据库。
4,ACCESS论坛大了以后就很容易出现数据库方面的问题,当论坛数据库在50M以上,帖子5万左右,在线也在100人左右的时候,你的论坛基本上都在处理数据库上花时间,这个时候很可能就会出现数据库慢的情况。
一般症状是所有涉及数据库的页面,突然运行都慢的出奇(执行时间达到5秒以上甚至几十秒),涉及HTML和纯ASP运算的页面都正常,等过一段时间(约10分钟或更长)以后又突然恢复(我的论坛有时候就会出现这样的问题)。这个时候你可以用一般ASP探针测试一下,如果服务器的运算时间正常,一般就是数据库方面的问题了。
解决方法:
由于这是ACCESS本身的局限性,所以解决的方法除了减少数据量和更换大型的数据库论坛以外也没什么好办法。
1。临时解决办法:定期删除多余的数据、压缩数据库,限制论坛灌水,甚至限制论坛注册。
2。比较长远办法:更换论坛和数据库,使用SQL数据库等等。
像我的论坛我一般都是定期清除多余或无用的数据,然后再用ACC2003管理器压缩数据库。因为目前我的网站用户并不多,使用暂时还是选择使用ACC数据库。
其实,如果大家的网站使使用的数据并不多或者用户不多时,选择ACC还是比较可以的。当然了,如果是在相同条件下,选择SQL数据库还是比较好的。