开发者社区> 问答> 正文

如何解决网站耗资源问题?

如何解决网站耗资源问题?

展开
收起
请回答1024 2020-03-18 18:49:51 671 0
1 条回答
写回答
取消 提交回答
  • 解决方案

    阿里云提醒您:

    如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 如果您对实例(包括但不限于 ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启 RDS 日志备份等功能。 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。 程序死循环 在很多情况下,出现死循环是因为程序缺少必要的检测和判断条件导致,这种情况需网站开发者对站点程序的代码进行检查和完善。

    程序有嵌套查询 嵌套查询代码示例如下所示。

    sql = "select * from a" set rs = server.createobject("adodb.recordset") rs.open sql,conn,1,1 while not rs.eof sql2 = "select * from b where fid=" & rs("id") set rs2 = server.createobject("adodb.recordset") rs2.open sql2,conn,1,1 ' //使用嵌套查询,效率会出现下降 while not rs2.eof response.write rs("id") & "=" & rs2("name") rs2.movenext wend rs.movenext wend

    嵌套查询会造成数据库的查询量呈指数级上升,导致一个程序的查询效率非常低。若程序改为连表操作,查询数据库的次数会少很多,并且在设计数据库的时候应该将b表的fid字段建立索引,否则连表查询的时候性能会差很多,代码示例如下所示。

    <% sql = "select a.id ,b.name from a left join b on b.fid=a.id" '//使用连表操作,并用具体的字段名代替 *,程序是高效很多 set rs = server.createobject("adodb.recordset") rs.open sql,conn,1,1 while not rs.eof response.write rs("id") & "=" & rs("name") rs.movenext wend %>

    ACCESS数据库的容量比较大 如果网站采用ACCESS数据库,当数据库的容量比较大时(比如超过100M以上),性能就可能会出现问题,所以访问量大的网站一般都采用SQL Server、MySQL、Oracle等性能比较高的数据库引擎。

    数据库的索引设置问题 一个表至少有一个主键和N个外键,一般主键作为表的唯一标识。当检索数据时,如果以主键的值来进行查找的话效率会比较高,而一些标志性的字段,例如产品表的产品所属分类、用户表的用户等级等,在程序中经常要用到这些字段来进行检索数据。那么,一般应该给这些字段建立索引,这样检索数据的时候性能会好很多。

    适用于 云虚拟主机

    2020-03-18 18:50:25
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《阿里云资源保障服务,让您从容应对资源波峰》 立即下载
《全面解析 阿里云节省计划》 立即下载
亿级 PV网站架构实战之性能压榨 立即下载