Oracle性能概要备忘(20190224工事中)

1.Sql实行计划,表的访问方式和结合方法

在这里插入图片描述
大致理一下Oracle体系结构,从上图可以看出,能简单的分为俩块
1.DB Instance
主要由共享池(Shared Pool)和DB Buffer,RODO Log Buffer
2.DB Storage
Oracle用到的数据文件(Data数据文件,参数文件,制御文件,REDO Log文件,归档Log文件)
思路:
1).用户进程(User Process)通过SQL*PLUS客户端或者通过Web App向通过监听文件的用户配置向Oracle发送请求
2).然后在Server Process中会持有PGA领域(这个领域会用于,排序,hash)
3).在SGA领域(Shared Pool:实行计划,DB Buffer:读取的Data文件数据,RODO Log Buffer:记录日志)
4).Background进程(CKPT:不同期的更新DB Buffer的数据到Data文件,LGWR:COMMIT的时候把RODO Log Buffer写入到REDO Log文件)

Select请求发生,Sql语句语法检测,权限检测(有没有这张表,对这张表有没有访问权限),SQL语句hash化,在Shared Pool中查找有没有一致的实行计划,没有Oracle优化器根据统计情报产生实行计划,选择IO cost最小的实行计划(这步尽量避免)(这步叫做硬解析),把实行计划缓存在Shared Pool中,执行实行计划,访问Data文件,把从文件中读取到的数据缓存到DB buffer中,然后Fetch。

实行计划解析:
1.软软解析(Softer Softer)
在Session中执行3次相同的游标会缓存到PGA,这个游标一直开着,当再有相同的SQL执行时,则跳过解析的所有过程直接去取实行计划。
2.软解析
1.语法、语义及权限检查;
2.将整条SQL hash后从库缓存中查找一致的实行计划。
3.硬解析:
1.语法、语义及权限检查;
2.将整条SQL hash后从库缓存中查找一致的实行计划。
3.软解析找不到一致的实行计划,根据统计情报生成可能成千上万个实行计划
4.实行计划缓存

shared pool:
1.free (空闲)
2.library cache (库缓存,缓存sql语句以及sql所对应的执行计划)
3.row cache (字典缓存——库里有多少表,多少用户,多少个列,列的名字,列的数据类型,每个表多大等等都属于数据库自身信息。也就是统计情报)

DB Buffer:分为Default、Keep和Recycle

Sql实行计划分为下面大致两个方向:
表的访问方式(索引访问,全表访问…)
两张表之间的结合顺序,结合方法(嵌套循环连接:Nested Loops Join,排序合并连接:Sort Merge Join,哈希连接:Hash Join)

1-1 表的访问方式(索引访问,全表访问…)

  1. 索引唯一扫描(INDEX UNIQUE SCAN)
    唯一索引查找一个数值经常返回单个ROWID。如果存在UNIQUE 或PRIMARY KEY 约束(它保证了语句只存取单行)的话,Oracle经常实现唯一性扫描。

  2. 索引范围扫描(INDEX RANGE SCAN)
    1.在唯一索引列上使用了range操作符(> < <> >= <= between)
    2.在组合索引上,只使用部分列进行查询,导致查询出多行
    3.对非唯一索引列上进行的任何查询

  3. 全表扫描(TABLE ACCESS FULL)
    为实现全表扫描,Oracle顺序地访问表中每条记录,并检查每一条记录是否满足WHERE语句的限制条件。
    ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描,而不是只读取一个数据块,这极大的减少了I/O总次数,提高了系统的吞吐量,所以利用多块读的方法可以十分高效地实现全表扫描。需要注意的是只有在全表扫描的情况下才能使用多块读操作。在这种访问模式下,每个数据块只被读一次。

  4. 通过ROWID访问表(table access by ROWID)
    ROWID指出了该行所在的数据文件、数据块以及行在该块中的位置,所以通过ROWID来存取数据可以快速定位到目标数据上,是Oracle存取单行数据的最快方法。
    select column1,column2 from tableName where rowid=‘WWEDAAA12DAA’;

1-2 表之间的结合顺序,结合方法(嵌套循环连接:Nested Loops Join,排序合并连接:Sort Merge Join,哈希连接:Hash Join)

  1. NESTED LOOP(驱动顺序)

  2. Hash Join(驱动顺序)

  3. SORT MERGE JOIN

2.从事务方面

事务的四大特性以及事务的隔离级别,脏读,不可重复读,幻读,乐观锁,悲观锁等等

3.分区相关

性能提升一般马上会想到的就是分区
范围分区
散列分区
列表分区
复合分区

4.实行计划具体分析和统计情报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值