For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
性能优化问题一直以来都是软件运维程序员需要长期关注的一个运营问题,而本文我们就通过案例分析来简单了解一下,性能优化常用方法都有哪些。
一、应用程序逻辑优化
a)一个大的问题就是循环里面取数据库连接,这种情况很普遍,所有地方全部进行了改正;
还有些功能点需要多次存取数据,考虑使用一个数据库连接;
取连接的语句在需要的时候执行,而不是在方法一开始就执行;
b)另一个问题是程序中,有些数据库连接释放的部分代码在try子句里面,有些在catch子句里面,现在全部改为在finally中执行连接释放的操作,这也是一个普遍的问题;
c)程序忽略了异常处理或者对异常处理不够正确,特别是一些无法测试的异常,一旦发生这里异常可能导致事务不一致,重复任务数据的BUG就是这样产生的,我们采取的处理办法是:
这些地方都进行了异常捕捉处理;
发生异常的地方都进行了事务的回滚;
d)另一个是事务一致性和并发性能的取舍问题,在关键功能上进行了利弊权衡;
e)有些大事务功能点,比如客户端下达,任务反馈日志填报等程序逻辑上,对数据表的更新顺序不一致,这些地方都调整成一致;以防并发出现互相锁等待的问题;
f)及时的释放大对象内存,比如客户端项目列表,WBS列表等;
g)有些大事务处理的程序导致DB后台日志满,磁盘空间不足的情况,我们除了及时的清理备份事务日志,还对这些大事务程序进行优化,拆分成多个小事务进行处理;
h)递归查询的地方采取了数据校验,防止递归的父和子的ID一致,死循环查询,导致终数据库临时表空间占满,内存溢出等问题;
二、数据库调优
a)定制一个runstats计划,将需要进行runstats的数据进行分类,哪些是按月,哪些是按周统计runstats实用程序用于更新系统目录表中的统计信息,以帮助查询优化过程
b)对一些排序,分组的字段或者关联查询的字段比如名称,日期等,根据索引原则,建立了索引;
c)定期进行数据库日志归档和清理;
d)利用性能测试工具和监控工具,进行了数据库的参数调优;
主要参数是缓冲池大小,locklist大小,排序堆阀值和大小,查询堆语句堆大小等;
LockTimeout的时间需要指定,但不能太大;
使用snapshot监视缓冲池,调整bufferpool参数,保证缓冲池命中率到95%+;
使用snapshot跟踪排序活动,并发测试大型排序的报表功能,调整sortheap参数,同时调整sheapthres参数;。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。