1.用户进程执行一个查询语句如select * from emp where empno=7839
2.用户进程和服务器进程建立连接,把改用户进程的信息存储到PGA的UGA中
3.语句经过PGA处理后传递给实例instance
4.实例instance中的共享池处理这条语句
a.库缓冲区去判断语句如何分析--软分析(快)或硬分析(慢)
2.根据cbo得到执行计划,准备去执行语句.(CBO和RBO是ORACLE提供的两种优化器)
3.查询语句中的对象(emp表和行)存放在那个表空间,指定的行放在那个块block里?需要到数据字典缓冲区得到这些信息。
4.开始执行
如何执行?在内存中执行
a.判断在database buffer cache数据缓存区中是否缓存了需要的block。(根据file#和block计算hash值查询bucket是否包含此块,包含逻辑读,不包含则物理读取)
i.如果是,在内存读取数据得到需要的行的结果返回给用户,用户看到执行的结果。
2.如果不是,则服务器进程把块从磁盘读入到data bufer cache缓存下来,然后undo缓存块会对该块做镜像,然后读镜像中的数据得到行的结果返回给用户,用户看到执行的结果。
oracle数据库优化-SELECT执行查询语句的过程
最新推荐文章于 2025-08-05 12:35:21 发布
本文详细解析了Oracle数据库中查询语句的执行流程,包括用户进程与服务器进程的交互、语句分析、执行计划的获取、数据缓存的读取及数据的最终返回过程。


2690

被折叠的 条评论
为什么被折叠?



