数据库学习(五)---oracle优化的方法

一、 减少数据访问

1、创建并使用正确的索引
2、只通过索引访问数据
3、优化SQL执行计划

二、返回更少的数据

1、数据分页处理
(1)客户端(应用程序或浏览器)分页
(2) 应用服务器分页
(3) 数据库SQL分页:rowid比rownum需要的IO少
2、只返回需要的字段

三、减少交互次数

1、batch DML
采用batch操作一般不会减少很多数据库服务器的物理IO,但是会大大减少客户端与服务端的交互次数,从而减少了多次发起的网络延迟开销,同时也会降低数据库的CPU开销。
2、IN List
例:用ID IN LIST:
select * from mytable where id in(:id1,id2…idn);
通过这样处理可以大大减少SQL请求的数据,从而提高性能。
3、设置Fetch Size
如果我们要从服务端一次取大量数据时,可以加大fetch_size,这样可以减少结果传输的交互次数及服务器数据准备时间,提高性能。
4、使用存储过程
5、优化业务逻辑
6、使用Resultset游标处理记录
采用resultset游标处理记录时,应该将游标的打开方式设置为FORWARD_READONLY模式,否则会把结果缓存在JVM里,造成JVM Out of Memory问题。

四、减少数据库服务器CPU运算

1、使用绑定变量
绑定变量优点:①防止sql注入②提高SQL可读性③提高SQL解析性能
不使用绑定变量一般称为硬解析,使用绑定变量我们称为软解析。
绑定变量是指sql中对变化的值采用变量参数的形式提交,而不是在sql中直接拼写对应的值。
非绑定变量写法:select * from employee where id = 123;
绑定变量写法:select * from employee where id = ? Prepare statement.set Int(1,123)
2、合理使用排序
3、减少比较操作
4、大量复杂运算在客户端处理

五、利用更多的资源

1、客户端多进程并行访问,前提是数据库主机资源有空间
2、数据库并行处理

六、主体思想保证服务器到不了并发瓶颈,在这个前提下,尝试优化

七、常用的优化策略首选索引,其次是交互次数和分页技术的使用

八、在数据量极其庞大的前提下,首选分布式处理方式

设置并行数的建议:

  • 如果瓶颈在服务器主机,但是主机还有空闲资源,那么最大并行数取主机cpu核数和主机提供数据服务的磁盘数两个参数中的最小值,同时要保证主机有资源做其它任务。
  • 如果瓶颈在客户端处理,但是客户端还有空闲资源,那建议不要增加sql的并行,而是用一个进程取回数据后在客户端起多个进程处理即可,进程数根据客户端cpu核数计算。
  • 如果瓶颈在客户端网络,那建议做数据压缩或者增加多个客户端,采用map reduce的架构处理。
  • 如果瓶颈在服务器网络,那需要增加服务器的网络带宽或者在服务端将数据压缩后再处理了。
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页