Oracle数据库优化策略总结篇

 更新时间:2015年08月14日 12:01:32   投稿:lijiao  
本文介绍了一些很实用但却不是很常见的Oracle数据库的优化策略,包括批量FETCH、SQL预解析等,需要的朋友可以参考下

为了提高查询效率,我们常常做一些优化策略。本文主要介绍一些Oracle数据库的一些不常见却是非常有用的优化策略,希望能对您有所帮助。

SQL语句优化

这个好办,抓到挪借CPU高的SQL语句,依据索引、SQL技巧等修改一下,行之管用。

SELECT时不利用函数

在做频繁的查询垄断时,尽量直接select字段名,然后利用C语言代码对查询收获做二次加工,避免让Oracle来做混杂的函数可能数学计算。因为Oracle出于通用性的琢磨,其函数及数学计算的速度远不及用C语言直接编译成机器码后计算来的快。

绑定变量

这个能够大幅度减退SQL的“hard parse”,我们大局部过程都曾经告终了变量绑定。个别未曾告终的,修正一下,也能很快看到收获。

批量FETCH

万一顺次select会归来多条(几百、上千)登记,利用批量Fetch,例如顺次fetch 1000条登记,要比一条条的fetch数据快的多,也能够管用减退oracle的压力。

批量提交

顺次修正多条(例如小于10000条左右)登记,然后顺次性提交,要比每条提交顺次快的多。当然前提是业务逻辑批准这么做。

批量增删改

万一必需顺次性修正可能剔除多条登记,能够批准批量数组绑定的措施,这个和前面说得“绑定变量”相仿,差异是前者绑定的是一个变量,这里绑定的是一个大数组的首指针,这种措施要比逐条绑定厉行快的多。

SQL预解析

前面的大局部是批量垄断,还有一种常见的场景是小事务垄断,但频率极其高nextplas.com。这种场景等闲SQL也不混杂,几乎未曾优化的余地了,然而由于垄断频繁,同样会构成CPU居高不下。现在我们的过程大局部都是下面这个利用形式:

loop 
 
parse sql; 
 
bind var; 
 
execute sql; 
 
end loop; 

固然我们利用了绑定变量的措施,然而由于垄断频繁,同样构成许多的“soft parse”以及网络通信。在内存数据库中,我们等闲批准预解析的措施来长进效率,事实上,Oracle很早就给开发者供给这种形式,只是开发者嫌繁琐没利于用而已。将过程改成下列形式:

parse sql; 
 
bind var; 
 
loop 
 
execute sql; 
 
end loop; 

这么就能够管用减退Oracle的压力,能够将厉行效率起码长进一倍。然而这种形式波及到过程构造的改变,定然在设计阶段就这么做。否则,后期再调剂的话,危险和工作量都会很大。

SQL语句的一些优化措施

1、SQL语句用大写的;因为Oracle总是先解析SQL语句,把小写的字母转换成大写的再厉行。

2、避免在索引列上利用NOT等闲,我们要避免在索引列上利用NOT, NOT会发生在和在索引列上利用函数雷同的波及。

3、当Oracle“碰到”NOT,他就会静止利用索引转而厉行全表扫描。

4、避免在索引列上利用计算。WHERE子句中,假定索引列是函数的一局部。优化器将不利用索引而利用全表扫描。

5、尽量少用DISTINCT垄断,用EXISTS轮换DISTINCTvalues should never be negative。

以上就是Oracle数据库的优化策略的全部,如果您想了解更多关于Oracle数据库的知识,那就关注Oracle数据库栏目,相信会对您有所收获的。

相关文章

  • 使用zabbix监控oracle表数据的方法

    使用zabbix监控oracle表数据的方法

    有时候我们需要对表中的数据进行监控,比如笔者的这种场景: 微服务自己实现了定时任务,定时任务的执行结果会记录到某张日志表中,如果定时任务执行失败将会对业务产生影响,所以笔者用zabbix+python进行了监控,当任务失败时 进行告警,需要的朋友可以参考下
    2024-04-04
  • CMD操作oracle数据导库过程图解

    CMD操作oracle数据导库过程图解

    这篇文章主要介绍了CMD操作oracle数据导库过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • MSSQL与Oracle数据库事务隔离级别与锁机制对比

    MSSQL与Oracle数据库事务隔离级别与锁机制对比

    事务隔离级别是并发控制的整体解决方案,其实际上是综合利用各种类型的锁和行版本控制,来解决并发问题。锁是数据库并发控制的内部机制,是基础。对用户来说,只有当事务隔离级别无法解决一些并发问题和需求时,才有必要在语句中手动设置锁。
    2014-08-08
  • Oracle数据库基本操作及Spring整合Oracle数据库详解

    Oracle数据库基本操作及Spring整合Oracle数据库详解

    这篇文章主要介绍了Oracle数据库的基本概念、特点和操作权限,以及如何在Spring Boot中整合Oracle数据库,包括导入依赖、配置文件设置、实体类、Dao层和测试,需要的朋友可以参考下
    2025-02-02
  • oracle索引介绍(图文详解)

    oracle索引介绍(图文详解)

    在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容
    2014-06-06
  • ORACLE 报警日志如何查看?

    ORACLE 报警日志如何查看?

    目得:首先了解什么是外部表,与其它表的区别,建立一个简单的外部表(主要看操作过程),最后我们用外部表查看ORACLE报警日志
    2009-06-06
  • oracle通过存储过程上传list保存功能

    oracle通过存储过程上传list保存功能

    这篇文章主要介绍了oracle通过存储过程上传list保存功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • Oracle 用户密码有效期的sql语句

    Oracle 用户密码有效期的sql语句

    这篇文章主要介绍了Oracle 用户密码有效期的sql语句的相关资料,需要的朋友可以参考下
    2016-01-01
  • Oracle管道函数pipelined function的用法小结

    Oracle管道函数pipelined function的用法小结

    这篇文章主要介绍了Oracle管道函数pipelined function的用法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • oracle11g管理员密码忘记怎么办 sqlplus解决忘记密码问题

    oracle11g管理员密码忘记怎么办 sqlplus解决忘记密码问题

    oracle11g管理员密码忘记了怎么办?这篇文章主要介绍了oracle 11g管理员密码忘记问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06

最新评论