系统性能优化之如何查找循环操作数据库
来源:互联网 发布:电信卡网络不好怎么办 编辑:程序博客网 时间:2024/05/22 02:19
循环操作数据库对系统性能影响很大,试想一下,点击一个按钮打开和关闭数据库上万次,长时间占用连接池,同时消耗数据库性能。在专项代码走查中比较难发现这些问题。下面是我解决这个问题的思路,
一、隔10分钟备份下v$sql的数据,有点模拟数据库的快照,awr报告中有SQL执行的次数,可惜是一个top排名,对于一个超大的系统来说,信息不太够。见附录一二、写程序对比,对于执行次数多的在工程中查找对应的表,查看相关的代码是否有循环操作的情况。本来是想把代码贴出来,由于时间比较赶,写的不太优美。
附录一
--创建临时表
drop table sql_text;create table sql_text nologging as select sysdate as gather_time,v.SQL_ID,v.SQL_TEXT,v.EXECUTIONS,v.FIRST_LOAD_TIME from v$sql v where 0=1;--隔10分钟备份一次v$sqlcreate or replace procedure p_sql_text asid number;begininsert /*+ append */ into sql_text select sysdate as gather_time,v.SQL_ID,v.SQL_TEXT,v.EXECUTIONS,v.FIRST_LOAD_TIME from v$sql v;commit;end;/--创建任务定时调用,并启动variable job_v_sql number;begindbms_job.submit(:job_v_sql,'p_sql_text;',sysdate,'sysdate+1/1440');commit;dbms_job.run(:job_v_sql);end;/--查询任务idselect job,broken from user_jobs s where s.what='p_sql_text;';--查询数据select distinct gather_time from sql_text order by gather_time;--停止任务 dbms_job.broken(job_id,true)execute dbms_job.broken(128,true);commit;--删除任务begindbms_job.remove(128);--128是job_idcommit;end;/--删除临时表truncate table sql_text;drop table sql_text purge;
- 系统性能优化之如何查找循环操作数据库
- JavaScript性能优化之循环操作
- 网站性能优化实践-for循环中的数据库操作
- 性能优化之数据库操作异步化
- 性能优化之避免在循环里面操作IO
- 性能优化之数据库
- 性能优化之数据库优化
- 性能优化之数据库优化
- 性能优化之数据库优化
- 性能优化之数据库优化
- 性能优化之数据库优化
- 性能优化之数据库优化
- 性能优化之数据库优化
- 性能优化之数据库优化
- 性能优化之数据库优化
- 性能优化之数据库优化
- 性能优化之数据库优化
- 性能优化之数据库优化
- Java基础 之软引用、弱引用、虚引用
- 强烈推荐几个比较好的Java代码查询网站
- 全排列算法与全组合算法
- jQuery 选择器(2)
- Ubuntu下openldap服务器的部署步骤
- 系统性能优化之如何查找循环操作数据库
- hdu 2097 Sky数
- svn clean **出错解决办法
- The rules about Object IDs
- Android学习札记44:解读APK反编译后得到的布局文件
- DOS命令
- jsp中的referer
- 固定搭配
- teradata查看执行计划