您好,欢迎访问三七文档
项目性能优化手册性能优化手册性能优化手册...................................................................................................................................2Oracle优化...............................................................................................................................21、oracle虚拟内存大小SGA_MAX_SIZE.........................................................................22、修改oracle内核参数.................................................................................................33、提高数据缓存命中率.................................................................................................34、数据库线程设置.........................................................................................................5WebLogic优化.........................................................................................................................61、修改weblogic域模式................................................................................................62、修改weblogic域环境的内存大小............................................................................63、设置Perm区大小.....................................................................................................74、Weblogic数据库连接池连接数设置.........................................................................75、weblogic线程池设置.................................................................................................76、属性文件weblogic.xml..............................................................................................87、Weblogic优化设置.....................................................................................................9线程粘滞(阻塞):.................................................................................................................9数据库连接池调整.................................................................................................................10Ibatis调整...............................................................................................................................10SQL性能优化建议................................................................................................................111、查看性能消耗多的SQL..........................................................................................112、提高SQL查询效率.................................................................................................12FAQ.........................................................................................................................................14Oracle优化1、oracle虚拟内存大小SGA_MAX_SIZESGA是一组包含一个Oracle实例的数据和控制信息的共享内存结构。SGA包括了各个缓冲区和内存池,当Oracle实例启动时,各个内存区只分配实例所需的最小大小,在随后的运行过程中,再根据需要扩展它们的大小,而它们的总和大小受到SGA_MAX_SIZE的限制。SGA分配的是虚拟内存,但是,我们在配置SGA时,一定要使整个SGA区在物理内存中,否则会导致SGA频繁的页入页出,会极大的影响系统的性能。配置SGA内存大小?一般是系统内在的一半。系统内存SGA_MAX_SIZE1G400-500M2G1G4G2500M8G5G查询SGA内存情况:SQLshowparametersgaNAMETYPEVALUE-------------------------------lock_sgabooleanFALSEpre_page_sgabooleanFALSEsga_max_sizebiginteger276Msga_targetbiginteger276M修改SGA大小:SQLaltersystemsetsga_max_size=512M;altersystemsetsga_target=512MSQLstartupforceORACLEinstancestarted.2、修改oracle内核参数kernel.shmmax:单个共享内存段的最大值,如果该参数设置小于OracleSGA设置,那么SGA就会被分配多个共享内存段。这在繁忙的系统中可能成为性能负担,带来系统问题。(以root身份进行修改/etc/sysctl.conf这个文件,加入或者修改以下的语句:kernel.shmmax=4294967296)536870912512M修改前42949672964G修改后3、提高数据缓存命中率从内存中读取数据要比从硬盘中读取数据快10000倍,如果oracle用户访问的数据块在buffercache中(即命中cachehit),就直接从内存中读取该数据块,如果不在则先从磁盘文件中读取到buffercache,然后才访问数据块,而buffercache是被所有oracle进程共享的。所以提高oraclebuffer命中率就可以提高数据库系统的性能。在Oracle数据库中,有很多因素会影响到数据库的缓存命中率。主要影响缓存命中率的有三个因素,分别为连接、索引与数据缓存的大小。(1)、数据库缓存大小DB_CACHE_SIZE如果把这个参数设置的太大,则系统在切换后就很可能会莫名其妙的罢工;而若这个参数设置的太小,则管理员无论如何优化数据库系统,其性能都会十分的有限,由于数据库没有足够的数据缓存来处理相关的操作。假如不考虑其它因素(如索引、连接)的影响,则一般情况下,假如这个参数设置的比较低的话,那么最近使用的数据就会被最近一次查询的数据所覆盖掉。如此的话,假如另外一个查询需要重新调用这些被覆盖的数据,则就必须重新从服务器的硬盘中读取相关的数据。此时就会极大的降低数据库查询的效率。9i以后,推荐使用db_cache_size来指定buffercache的大小。在OLTP系统中,对于DB_CACHE_SIZE的设置,我的推荐配置是:DB_CACHE_SIZE=SGA_MAX_SIZE/2~SGA_MAX_SIZE*2/3SQLaltersystemsetdb_cache_size=128Mscope=spfile;systemaltered.DB_CACHE_SIZE是可以联机修改的,即实例无需重启。除了这个数据缓存大小为,还有索引、表连接等等。有时候可能索引或者表连接不合理,反而会造成很高的索引命中率。为此假如由于数据缓存命中率不高或者异常的高,在调整数据缓存之前最好先对索引或者表连接进行优化。对他们进行调整之后,再来判断是否需要调整数据缓存。一个良好性能的系统,这一值一般保持在95%左右。查看当前的BufferCache命中率:SQLselect1-(physical_reads)/(consistent_gets+db_block_gets)fromv$buffer_pool_statistics;1-(PHYSICAL_READS)/(CONSISTENT------------------------------0.967658520581074SQL(2)、索引和连接保证所有表都建有索引,SQL查询尽可能的带索引查询,否则建了索引也没用,两张表,百万数据,全表扫描,再连接,很费时间和性能。(3)、定期重建索引定期重建索引不仅可以提高查询性能,还能增加索引表空间空闲空间大小。用Toad(Oracle应用开发工具)看哪些索引需要重建,ALTERINDEXINDEXNAMEREBUILD(4)、整理oracle碎片如果段的碎片过多,将其数据压缩到一个范围的最简单方法便是用正确的存储参数将这个段重建,然后将旧表中的数据插入到新表,同时删除旧表。这个过程可以用Import/Export(输入/输出)工具来完成。Export命令有一个(压缩)标志,这个标志在读表时会引发Export确定该表所分配的物理空间量,它会向输出转储文件写入一个新的初始化存储参数--等于全部所分配空间。若这个表关闭,则使用Import工具重新生成。这样,它的数据会放入一个新的、较大的初始段中。例如:1)、导出整个库:expuser/passwordfile=exp.dmpcompress=Ygrants=Yindexes=Ytables=(table1,table2);2)、若输出成功,则从库中删除已输出的表,然后从输出转储文件中输入表:impuser/passwordfile=exp.dmpcommit=Ybuffer=64000full=Y这种方法可用于整个数据库。4、数据库线程设置通过设置以下语句查询和设置oracle的线程数:--查询最大线程数:showparameterprocesses;--更改线程连接数
本文标题:Web项目优化手册
链接地址:https://www.777doc.com/doc-2867214 .html