1 概述
1. 思考:通常,执行一条 sql 语句,立马能返回结果,
但是,在 Oracle 内部,是如何处理这条 sql 语句的呢?
2. 考点
(1) 主要流程
四大步骤
(2) 主要进程
'服务器进程' 将 '数据块' 从 '数据文件' 读取至 '数据库缓冲区缓存'
'DBWn' 后台进程则将 '数据块' 从 '数据库缓冲区缓存' 写入 '数据文件'
2 原理图解
一条 sql 语句执行原理解释:
1. 语句获取
(1) '用户进程' 将 sql 语句发送给 '服务器进程'
(2) 具体的处理逻辑都在 '服务器进程' 中
2. 语句解析
(1) 查询高速缓存(Library Cache),若有,直接进入 '3. 语句执行'
(2) 语法检查 :语法规则
(3) 语义检查 :表名、列名等
(4) 获得对象锁 :保护数据的一致性
(5) 用户权限检查 :用户是否拥有访问该数据的权限
(6) 确定最佳执行计划:服务器自我优化
3. 语句执行
(1) 直接查询 数据库缓冲区缓存(Database Buffer Cache)
(2) 若没有,则将 '数据文件' 读取至 '数据库缓冲区缓存'
4. 语句提取
(1) '服务器进程' 将语句执行结果返回给 '用户进程'