带您理解SQLSERVER是如何执行一个查询的
带您理解SQLSERVER是如何执行一个查询的 看这篇文章之前,阁下可以先看一下下面的文章 SQLSERVER独特的任务调度算法"SQLOS" SQL Server SQLOS 的任务调度[转] 翻译自: 不知道是哪篇文章抄哪篇文章的 ,不管他了,我也偷他们的文章,嘎嘎嘎嘎嘎。。。 我将会
带您理解SQLSERVER是如何执行一个查询的
看这篇文章之前,阁下可以先看一下下面的文章
SQLSERVER独特的任务调度算法"SQLOS"
SQL Server SQLOS 的任务调度[转]
翻译自:
不知道是哪篇文章抄哪篇文章的 ,不管他了,我也偷他们的文章,嘎嘎嘎嘎嘎。。。
我将会用尽本人的所有功力并且结合研究SQLSERVER以来的知识去翻译这篇文章
希望大家多多支持o(∩_∩)o,其实我也是站在巨人的肩膀上的,呵呵~
特别说明:为了节省篇幅,文中会对原文有删减,删减的部分都是一些不重要的部分
在这里感谢有道词典(我不是卖广告啊!!!)
正式开始
连接方式和请求
如果你是一个开发者,并且你的程序使用SQLSERVER来做数据库的话
你会想知道当你用你的程序执行一个查询的时候实际发生了什么事情
我希望这篇文章能够帮你写出更好的数据库应用程序和帮你更深入了解遇到的数据库性能问题
SQLSERVER是一个C/S模型的平台。唯一和数据库交互的方式只有发送包含数据库命令的请求到数据库服务器端。
客户端和数据库通信的协议使用一种叫做TDS的协议(Tabular Data Sream)
园子里的文章:
表格数据流协议TDS
TDS协议解析(转载)
如果你用微软的Network Monitor工具来抓取SQL Server和客户端之间的网络包
你会看到使用的是TDS协议
在Description那一列
TDS:Response,Version=7.1......
TDS:SQLBatch,Version=7.1.......
那四个SSL连接是客户端登录SQLSERVER前做的加密连接(这里不管你有没有用SSL加密数据传输,SQLSERVER都会在登录前加密
用户发过来的用户名和密码,而登录了之后才使用您配置的SSL证书来加密客户端和SQLSERVER往来的数据)
SQLSERVER都会加密客户端发过来的用户名和密码(使用SQL验证不是使用Windows验证)
大家可以留意一下SQL ERRORLOG里在SQLSERVER启动的时候的日志
会看到一句:A self-generated certificate was sccessfully loaded for encryption
默认情况下SQL Server会自动生成一个证书并使用这个证书来对客户端登录SQLSERVER的时候的连接做SSL加密,