求数据库高手帮忙!
我想了解一条SQL语句从客户端发到服务器后,到最后消失的过程,服务器又是怎么处理这条语句的等等谢谢!...
我想了解一条SQL语句从客户端发到服务器后,到最后消失的过程,服务器又是怎么处理这条语句的等等 谢谢!
展开
2个回答
展开全部
第一步:客户端把语句发给服务器端执行。(客户端用C表示,服务器端用S表示)
当在C执行SQL语句时,它先发给S,让S端启动操作系统进程来处理这条SQL语句,因此C只是简单的启动一个进程把SQL语句发给S端处理,等待服务器端返回。
第二步:S端对SQL进行解析:
1、查询高速缓存,查找是否存在相同的执行计划,如果存在,则直接从内在中读取数据返回。如果不存在,则继续下一步:
2、语句合法性检查:即语法规则检查,如果不符合则返回错误给C端,否则进行下一步
3、语言含义检查:检查字段,表,视图等这些数据库对象是否存在或准确,如果不符合则返回错误给C,否则下一步;
4、获得对象解析锁:对处理的数据库对象加锁,主要是保障数据的一致性,防止在处理过程中并发产生时引起数据的不一致;
5、数据访问权限核对,检查连接的用户是否有这个数据访问的权限,如果没有则返回错误信息,否则下一步;
6、确定最佳执行计划:S端根据一定的算法,对语句进行优化以确定它的执行计划,再把SQL语句与这个执行计划保存到数据的调整缓存中,如此,以后还有相同的处理时,则直接省略上述的2-6个,直接执行SQL语句,提高效率。
第三步:语句执行
若被处理的数据已经被读取到数据缓冲区中,则S端进程会直接把这个数据发到C,而不再去数据库文件中查找,否则S进程会从数据库文件中查询处理相关数据,并把这个数据放到数据缓冲区中
第四步:提取数据:
在S的进程中,会有一个专门负责数据提取的一段代码,专门把查询处理好的数据返回C,从而完成整个过程。
当在C执行SQL语句时,它先发给S,让S端启动操作系统进程来处理这条SQL语句,因此C只是简单的启动一个进程把SQL语句发给S端处理,等待服务器端返回。
第二步:S端对SQL进行解析:
1、查询高速缓存,查找是否存在相同的执行计划,如果存在,则直接从内在中读取数据返回。如果不存在,则继续下一步:
2、语句合法性检查:即语法规则检查,如果不符合则返回错误给C端,否则进行下一步
3、语言含义检查:检查字段,表,视图等这些数据库对象是否存在或准确,如果不符合则返回错误给C,否则下一步;
4、获得对象解析锁:对处理的数据库对象加锁,主要是保障数据的一致性,防止在处理过程中并发产生时引起数据的不一致;
5、数据访问权限核对,检查连接的用户是否有这个数据访问的权限,如果没有则返回错误信息,否则下一步;
6、确定最佳执行计划:S端根据一定的算法,对语句进行优化以确定它的执行计划,再把SQL语句与这个执行计划保存到数据的调整缓存中,如此,以后还有相同的处理时,则直接省略上述的2-6个,直接执行SQL语句,提高效率。
第三步:语句执行
若被处理的数据已经被读取到数据缓冲区中,则S端进程会直接把这个数据发到C,而不再去数据库文件中查找,否则S进程会从数据库文件中查询处理相关数据,并把这个数据放到数据缓冲区中
第四步:提取数据:
在S的进程中,会有一个专门负责数据提取的一段代码,专门把查询处理好的数据返回C,从而完成整个过程。
顶讯科技
2024-10-23 广告
2024-10-23 广告
顶讯科技现场采集关联平台,根据产品特性与企业现场生产线需求,定制化现场采集关联控制平台,满足企业不同产品线,不同包装种类的采集关联需求,能够实现根据企业实际生产流程及工艺 的数码采集及关联。顶讯科技服务覆盖全球多个国家地区,正在成为各行各业...
点击进入详情页
本回答由顶讯科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询