Oracle数据库的体系架构非常复杂,很难用一篇文章介绍清楚。SQL语句是外界和数据库打交道的主要方式,今天我们就以一条SQL的视角,看看一条查询语句在数据库中是如何执行的。
应用架构
最早的应用架构主要是CS(Client-Server)架构,其主要构成是访问数据的客户端和主要由数据库担当的服务器端。后来随着互联网技术的发展,很多应用通过浏览器来访问数据,因此又出现了BS(Browser-Server)架构。由于浏览器更靠近用户端,且其设计上以轻便为主,不适宜承担过多的功能,因此在BS架构中通常还有一层 – 应用层,实际上是由浏览器发送指令到应用层,应用层再和数据库进行交互。
用户通过浏览器或者客户端提交给Oracle数据库的SQL语句,需要经过一系列的操作,才能完成用户的目标,把SQL转换成最终的结果返回给客户端。下图是一个SQL语句的完整执行过程,主要包括SQL解析、SQL优化、SQL行源生成和SQL执行等几个阶段。
解析和优化阶段
SQL解析阶段,有可以细分为语法和语义检查、权限检查、生成执行计划等几个步骤。
- 语法检查,这个很好理解,不是随便写几个单词就能交给数据库执行,需要验证提交的SQL语句是否符合SQL规范,是否满足语法要求; <