项目优化策略
前言: 笔者认为,优化策略有千万种,主要还是根据自身项目的架构来进行优化,才能达到物尽其用的。
笔者也是第一次尝试对项目进行优化,可能略显不足,欢迎各位指正。
1.先说下项目架构,以及出现的问题
笔者所在的项目是 部分共依附于一个开发平台(传统的MVC实现,即模型-视图-控制器再到前台页面),当然业务复杂的需要写一些接口或者新的页面,
项目中大部分功能是基于平台开发一个相对"简单"的页面,然后比如一个页面可能发起七八个Ajax请求甚至更多,这七八个请求可能在三四个服务器上。
1.1 数据库方面
使用的是SQLserver这里采用了读写分离策略,有很多存储过程,阅读存储过程发现,内容复杂冗长可阅读性较低,其代码长度达到几十甚至
上百行。表字段设计冗长, 系统常用表(大概五六个表为使用频率特别高)的字段基本都在100以上,字段的定义一般是char、vhar.
1.2 接口方面
使用的是webservice 以及webaip,在SQL语句里写入很长的语句,在项目中很普遍存在。 在项目中经常发生引用,比如类A要使用类B的b1方法
b1方法中调用类C的c1方法 ,项目中的处理方式是 B b0=new B(); 然后b.method();
1.3 连接数据库使用的是ADO.NET ,未做封装,即比如有三个接口,每个接口里会把从开启连接---执行SQL---关闭连接都写一遍,检查到
1 SQL方面
查看到系统中存在有许多较为复杂逻辑的SQL
建议:
首先,针对于存储过程,建议行成文档,写明作用以及参数。利于项目管理以及团队协作开发。
优化方案:
1复杂逻辑处理
尽量去交给程序处理,之前与领导讨论,其实公司服务器的状态很OK,但是效率依旧缓慢,这里也会是一个重要的点,复杂的逻辑套的层次太多,SQL在处理这块的时候自然就会很慢
2 查询语句的优化
禁止使用SELECT * ,这样的查询语句,需要什么拿什么。比如一个表A有150个字段,
而需要的结果只是10个字段,那么查询的时候应该只查这十个字段,从而加大数据库的效率。
使用索引进行查询
3表结构优化
这一步工作虽然不好做,但是个人感觉是必要的。数据库在当初设计的时候,字段随意添加,导致表的字段过于冗长,之前做过会儿表结构整理,发现很多表的字段都达到了一百甚至更多,可以把表进行拆分。
2程序方面
1 USING作用域的使用
using作用域,在该域内使用之后就释放资源。比如系统中很多时候会通过new 去创建一个对象,这里就涉及到了内存开销。用完后没有及时释放,只有等内存满了以后,程序才会自动释放资源。在使用定时任务的时候,也应该使用到。比如一个定时任务每两小时执行一次,开始执行的时候会gc掉上次的资源,本次资源会一直持续的持有,占用了内存
2 ADO.NET的优化
查看到公司的项目,连接数据库都是使用的ADO.NET,一个页面可能发送四五个、七八个、甚至更多请求到Webservice或者WebAPI上,然后不停的打开数据库连接,而部分代码中并未去关闭连接,这样也会损耗性能,建议使用using作用域
缓存一些公用的数据,如组织机构等
这里也建议不要string sql=””时写过于复杂的SQL语句,可以考虑使用存储过程来处理,并且不要SELECT * 进行查询,只返回需要的数据
使用类型化方法访问属性
从Row中访问某列属性,用GetString、GetInt32这种显式指明类型的方法,其效率较通用的GetValue方法有细微提高,因为不需要做类型转换。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix