性能优化交流演示课件_第1页
性能优化交流演示课件_第2页
性能优化交流演示课件_第3页
性能优化交流演示课件_第4页
性能优化交流演示课件_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、了解性能优化通信、wangql、Java内存、Heap:运行时数据区、动态创建和GC回收。 Stack:比堆栈访问速度快,可以共享堆栈数据。 堆栈中存在的数据的大小和生存时间必须确定。 堆栈主要容纳了几个基本类型的变量(,(int,short,long,byte,float,double,boolean,char )和对象句柄。 Other(Static,String,Function code )的优点是尽可能使用局部变量:范围是变量定义的方法内部,一旦离开范围,堆栈内存就会立即释放,而不管GC如何。 其他变量(如静态变量和实例变量)由堆(Heap )生成,速度很慢。 谨慎地使用例外,例外仅

2、用于错误处理,不适合控制流。 要抛出异常,首先要创建新对象。 Throwable接口的构造函数调用名为fillinthestacktrace ()的本地方法,fillinthestacktrace ()方法检查堆栈并收集调用跟踪信息。 每次抛出异常时,VM都需要调整调用堆栈,因为在处理过程中会创建新对象。 多线程-锁1,同步的reetrantlock:公平或不公平,多线程-锁2,同步的锁和锁吞吐量单CPU,同步的锁和锁的吞吐量4cpu,多线程-洛协商锁定和公平锁定的相对吞吐量、使用1cpu时的同步、协商和公平锁定的相对吞吐量、多线程:启用“锁定”4。 不仅假设使用ReentrantLock“能

3、提高性能”。 什么时候应该使用ReentrantLock? 如果真的需要未同步的特性,则例如等待时间锁定、等待中断锁定、无块结构锁、多个条件变量、锁定投票等。 在高冲突情况下使用ReentrantLock,但是大多数同步的块从没有发生冲突。 线程池- -执行和线程的创建和销毁占用了很大的资源。 例如,创建一个线程大小为20的线程池。 executors.newfixedsthreaddpool (20 ),掌握原子的同时性,Hashtable (或替代方案collects.synchronizationedmap )的可扩展性的主要障碍是map范围(map-wide ) 或者为了保证检索操作的

4、完整性,必须保持该锁,有时为了保证重复遍历操作的完整性,也必须保持该锁。 这样,极大地限制了并发性,因为只要锁定被保持,就根本上阻止其他线程访问Map,并且即使处理器空闲也不能被访问。 同时掌握原子-ConcurrentHashMap消除了单一map范围的锁定,而是由32个锁定组成的集合,每个锁定保护hash bucket的子集。 锁定主要用于可变操作(put ()和remove () )。 有32个独立的锁定意味着最多32个线程可以同时修改map。 大多数系统应用程序是绝对足够的。 ConcurrentLinkedQueue也具有同样的原理。 异步调用,swingworkerdoinback

5、ground- publish-中间过程应用done-完成后的处理,New,clone,reflection,对象生成效率: New深克隆reflection复杂包括List等数据结构参数)浅clonenewreflection,字符串优化,减少字符串打印StringBuffer,避免多字符串级联,SQL优化-查询缺陷1,1,循环查询(常见)。 2、没有索引或没有使用索引(这是查询最常见的问题,是编程的缺陷)。 3、I/O吞吐量小,形成了瓶颈效应。 4 .如果没有创建计算列,则无法优化查询。 5、内存不足6、网络速度慢、SQL优化-查询缺陷2、7、查询的数据量太大(可以采用多个查询以其他方式减

6、少数据量)、8、锁定或死锁(这也是查询最常见的问题10、返回了不必要的行和列11,查询语句不好,未优化,SQL优化-语句优化1,使用索引快速遍历表NOT IN时,多次扫描表,EXIST,NOT EXIST,IN,IN 其中有完全表扫描和范围扫描相关的内容。 几乎所有IN算子的子查询都改写为使用EXISTS的子查询。 在大型查询中,尽量减少格式转换,在SQL优化-语句优化2、IN和OR子句中,通常使用工作表来禁用索引。 如果没有生成大量的重复值,请考虑分解子句。 分解的子句中必须包含索引的慎重光标. 如果必须使用游标,则可以将满足条件的数据行放在临时表中,然后使用临时表定义光标,从而大大提高性能

7、。 SQL优化-语句优化3,不使用“”或“”的运算符。 如果操作不等于运算符,则可以扫描整个表,而使用“”。 如果Where子句中出现IS NULL或IS NOT NULL,Oracle将停止使用索引并执行所有表扫描。 在设计表时,请考虑在索引列中设置NOT NULL。 如果通配符“%”或“_”用作查询字符串的第一个字符,则不使用索引。SQL优化-对于语句优化4,连接列“|”,最后连接列的索引将被禁用。 为了尽量不连接,可以分别连接,也可以使用不影响列的函数。 如果索引不是基于函数的,则如果在Where子句中对索引列使用函数,该索引将无法工作。 在Where子句中,请勿在索引列中使用计算。 如

8、果不使用,索引将无效,并扫描整个表。 如果比较不同数据类型的列,索引将被禁用。SQL优化-替换为语句优化5,“=”。 UNION运算符可以对结果进行过滤,消除重复,如果数据量大,则会导致磁盘排序。 如果不需要删除重复记录,则必须使用UNION ALL。 由于Oracle自下而上地处理Where子句中的多个查询条件,因此表连接语句必须先出现在其他Where条件之前,而可以筛选最大记录数的条件必须出现在Where子句的末尾。 SQL优化-语句优化6,Oracle从右向左处理From子句中的表名,因此,如果From子句包含多个表,则将记录最少的表放在最后。 Order By语句的索引以外的列可以通过降低性能并添加索引来处理。 严格控制在Order By语句中使用表达式。 如果在Sql语句中连接多个表,则使用该表的别名作为每列的前缀。 这可以缩短分析时间。 优化SQL-优化语句7,利用内部函数提高SQL的效率。 如果不同区域存在相同的Sql语句,请确保查询字符完全相同,以防止使用SGA共享池多次分析同一Sql语句。 优化SQL-优化程序、oracleoptimizersqlserveranalyzeser

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论