看过inside SQLSERVER2005 T-SQL查询这本书的人都知道T-SQL的逻辑执行顺序,我写这篇文章的目的就是让做数据库优化工作的朋友了解SQLSERVER上层组件如何处理T-SQL语句。
数据库处理组件分查询引擎和存储引擎。
1、网络协议层,这一层很少有朋友去了解他们,它分4种协议,这四种协议大家在安装SQLSERVER实例后,可以在配置管理器中看到:
(1)内存共享协议(shared memory),这个大家在安装实例时,默认打开,同时也是SQLSERVER指定的默认管道。
(2)命名管道(Named Pipes),这个是实例用于局域网通信,可以通过服务器别名连接数据库。
(3)TCP/IP,这个是最常用的,大家使用SSMS连接数据库时,使用IP连接数据库,通常连接服务器时,默认是1433端口(除非你改了端口号),另外,服务器如果有多个实例,那么连接时,除非连接默认实例,否则都要使用IP\实例名。
(4)VIA,虚拟局域网络,这个需要专用通道。
2、TDS层,这也是一个协议,表单数据包协议,负责发送请求和接受数据。它会建立与服务器端的连接,并将T-SQL命令封装为TDS数据包发送给服务器端。
3、oledb协议层,这个会执行与TDS层相反的事情,先把TDS包解包并解释成T-SQL语句传递给数据库引