Oracle优化[通俗易懂]

个人理解,数据库性能最关键的因素在于IO,因为操作内存是快速的,但是读写磁盘是速度很慢的,优化数据库最关键的问题在于减少磁盘的IO,就个人理解应该分为物理的和逻辑的优化,物理的是指oracle产品本身的一些优化,逻辑优化是指应用程序级别的优化物理优化的一些原则:1).Oracle的运行环境(网络,硬件等)2).使用合适的优化器3).合理配置oracle实例参数4).建…

大家好,又见面了,我是你们的朋友全栈君。

个人理解,数据库性能最关键的因素在于IO,因为操作内存是快速的,但是读写磁盘是速度很慢的,优化数据库最关键的问题在于减少磁盘的IO,就个人理解应该分为物理的和逻辑的优化, 物理的是指oracle产品本身的一些优化,逻辑优化是指应用程序级别的优化 
物理优化的一些原则: 
1). Oracle的运行环境(网络,硬件等) 
2). 使用合适的优化器 
3). 合理配置oracle实例参数 
4). 建立合适的索引(减少IO) 
5). 将索引数据和表数据分开在不同的表空间上(降低IO冲突) 
6). 建立表分区,将数据分别存储在不同的分区上(以空间换取时间,减少IO) 
   逻辑上优化: 
1). 可以对表进行逻辑分割,如中国移动用户表,可以根据手机尾数分成10个表,这样对性能会有一定的作用 
2). Sql语句使用占位符语句,并且开发时候必须按照规定编写sql语句(如全部大写,全部小写等)oracle解析语句后会放置到共享池中 
如: select * from Emp where name=?  这个语句只会在共享池中有一条,而如果是字符串的话,那就根据不同名字存在不同的语句,所以占位符效率较好 
3). 数据库不仅仅是一个存储数据的地方,同样是一个编程的地方,一些耗时的操作,可以通过存储过程等在用户较少的情况下执行,从而错开系统使用的高峰时间,提高数据库性能 
4). 尽量不使用*号,如select * from Emp,因为要转化为具体的列名是要查数据字典,比较耗时 
5). 选择有效的表名 
对于多表连接查询,可能oracle的优化器并不会优化到这个程度, oracle 中多表查询是根据FROM字句从右到左的数据进行的,那么最好右边的表(也就是基础表)选择数据较少的表,这样排序更快速,如果有link表(多对多中间表),那么将link表放最右边作为基础表,在默认情况下oracle会自动优化,但是如果配置了优化器的情况下,可能不会自动优化,所以平时最好能按照这个方式编写sql 
6). Where字句 规则 
Oracle 中Where字句时从右往左处理的,表之间的连接写在其他条件之前,能过滤掉非常多的数据的条件,放在where的末尾, 另外!=符号比较的列将不使用索引,列经过了计算(如变大写等)不会使用索引(需要建立起函数), is null、is not null等优化器不会使用索引 
7). 使用Exits Not Exits 替代 In  Not in 
8). 合理使用事务,合理设置事务隔离性 
数据库的数据操作比较消耗数据库资源的,尽量使用批量处理,以降低事务操作次数

 

8. Oracle分区是怎样优化数据库的? 
Oracle的分区可以分为:列表分区、范围分区、散列分区、复合分区。 
1).  增强可用性:如果表的一个分区由于系统故障而不能使用,表的其余好的分区仍可以使用; 
2).  减少关闭时间:如果系统故障只影响表的一部份分区,那么只有这部份分区需要修复,可能比整个大表修复花的时间更少; 
3).  维护轻松:如果需要得建表,独产管理每个公区比管理单个大表要轻松得多; 
4).  均衡I/O:可以把表的不同分区分配到不同的磁盘来平衡I/O改善性能; 
5).  改善性能:对大表的查询、增加、修改等操作可以分解到表的不同分区来并行执行,可使运行速度更快 
6).  分区对用户透明,最终用户感觉不到分区的存在。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125685.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月6日 上午10:00
下一篇 2022年4月6日 上午10:20


相关推荐

  • ODrive应用 #1 ODrive入门指南[通俗易懂]

    ODrive应用 #1 ODrive入门指南[通俗易懂]ODrive入门文章目录ODrive入门硬件需求需要准备以下硬件:ODrive接线WiringupthemotorsWiringuptheencodersSafety&PowerUPDownloadingandInstallingToolsWindowsOSXLinuxFirmwareStart`odrivetool`ConfigureM02.Set…

    2022年5月14日
    92
  • [转]一堂价值39万元的课,把它看完,你一定会有收获

    [转]一堂价值39万元的课,把它看完,你一定会有收获br 幸福是自己去争取的 不管是友情或爱情很多事情 错过了就没有了 所以如果你没有认真看完这篇文章 以后你就没有了 br br 我已经把这篇文章打印 放在电脑旁边 体会其中的深奥道理 br br 如果他说得真的是真理 你会按他所说的去做么 我想 只要你用心了 哪怕你做到了一点点 你就是进步的 你就学到了新知识 你就进步了 br br 导言 br br 黄力泓说 想要减肥的人千万不要跟胖子在一起 br br 黄力泓说

    2026年2月14日
    3
  • 经典网页设计:25个优秀的个人网站设计欣赏

    经典网页设计:25个优秀的个人网站设计欣赏个人网站是让人们知道你 了解你生活中成就的最佳方式 有些人选择最搞笑的言论表达自己的想法 有的人则充分展现自己的个性 不管采用什么方式呈现你的个人网站 重要的是 把你最好的一面表现出来 下面是一些帮助你制作成功的个人网站的很有用的例子 CatRabbit nbsp CMYK08 nbsp MeandMyAAA nbsp MarkLaw

    2026年3月19日
    2
  • Hibernate与 MyBatis的比较

    Hibernate与 MyBatis的比较最近做了一个Hibernate与MyBatis的对比总结,希望大家指出不对之处。第一章     Hibernate与MyBatisHibernate 是当前最流行的O/Rmapping框架,它出身于sf.net,现在已经成为Jboss的一部分。 Mybatis 是另外一种优秀的O/Rmapping框架。目前属于apache的一个子项目。MyBatis 参考资料官网:ht

    2025年8月20日
    4
  • Mac安装 MySQL 可视化工具MySQL Workbench

    Mac安装 MySQL 可视化工具MySQL WorkbenchMac 安装 MySQL 可视化工具 MySQLWorkben 一 安装 MySQLMac 下载地址 https dev mysql com downloads mysql 双击安装包一路 next 安装完成后可以在系统偏好设置中找到 MySQL 点击进入 MySQL 设置界面打开命令行终端执行 aliasmysql usr local mysql bin mysqlaliasmy usr local mysql bin mysqladminmy

    2026年3月17日
    2
  • 强化学习 Q学习原理及例子(离散)附matlab程序

    强化学习 Q学习原理及例子(离散)附matlab程序原文地址:http://mnemstudio.org/path-finding-q-learning-tutorial.htm这篇教程通过简单且易于理解的实例介绍了Q-学习的概念知识,例子描述了一个智能体通过非监督学习的方法对未知的环境进行学习。假设我们的楼层内共有5个房间,房间之间通过一道门相连,正如下图所示。我们将房间编号为房间0到房间4,楼层的外部可以被看作是一间大房间,编号为5。注

    2022年10月3日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号