`

应用程序的SQL查询原理

 
阅读更多
我们经常是写好查询SQL,然后调用程序执行SQL。但是它内部的工作流程是怎样的呢?先做哪一步,然后做哪一步等,我想还有大部分朋友和我一样都不一定清楚。 



我们在数据层执行SQL语句时,应用程序会连接到相应的数据库服务器,把SQL语句发送给服务器处理。



1:SQL计划缓存,经常用查询分析器的朋友大概都知道这样一个事实,往往一个查询语句在第一次运行的时候需要执行特别长的时间,但是如果你马上或者在一定时间内运行同样的语句,会在很短的时间内返回查询结果。



1):服务器在接收到查询请求后,并不会马上去数据库查询,而是在数据库中的计划缓存中找是否有相对应的执行计划,如果存在,就直接调用已经编译好的执行计划,节省了执行计划的编译时间。



2:如果在SQL计划缓存中没有对应的执行计划,服务器首先会对用户请求的SQL语句进行语法效验,如果有语法错误,服务器会结束查询操作,并用返回相应的错误信息给调用它的应用程序。



3:语法符合后,就开始验证它的语义是否正确,例如,表名,列名,存储过程等等数据库对象是否真正存在,如果发现有不存在的,就会报错给应用程序,同时结束查询。



5:接下来就是对数据库用户权限的验证,SQL语句语法,语义都正确,此时并不一定能够得到查询结果,如果数据库用户没有相应的访问权限,服务器会报出权 限不足的错误给应用程序,在稍大的项目中,往往一个项目里面会包含好几个数据库连接串,这些数据库用户具有不同的权限,有的是只读权限,有的是只写权限, 有的是可读可写,根据不同的操作选取不同的用户来执行,稍微不注意,无论你的SQL语句写的多么完善,完美无缺都没用。



当确定好执行计划后,就会把这个执行计划保存到SQL计划缓存中,下次在有相同的执行请求时,就直接从计划缓存中取,避免重新编译执行计划。



服务器对SQL语句解析完成后,服务器才会知道这条语句到底表态了什么意思,接下来才会真正的执行SQL语句。
些时分两种情况:



2):如果数据行没有在数据缓冲存储区中,则会从物理文件中读取记录返回给应用程序,同时把数据行写入数据缓冲存储区中,供下次使用。



DBCC DROPCLEANBUFFERS



DBCC FREEPROCCACHE



DBCC FREESYSTEMCACHE



这只能基本消除SQL缓存的影响,目前好像没有完全消除缓存的方案,如果大家有,请指教。



1:确保SQL语法正确;



3:数据库用户是否具有相应的访问权限。
分享到:
评论

相关推荐

    SQL查询原理及执行顺序

    ### SQL查询原理及执行顺序详解 SQL(Structured Query Language)是一种用于管理关系型数据库的标准...了解和掌握这些原则,可以帮助开发者编写更高效、更优化的SQL查询,从而提高数据库应用程序的性能和响应速度。

    SQL Server应用程序中的高级SQL注入

    SQL注入的基础在于将恶意SQL代码嵌入到应用程序的正常查询中。在标准的SQL注入中,攻击者通常会在输入字段中插入特殊字符(如单引号)来破坏原始SQL语句的结构,从而迫使数据库执行额外的命令。然而,高级SQL注入不...

    数据库原理与应用SQL Server 2005

    SQL Server Management Studio(SSMS)是主要的管理工具,它包含了查询编辑器,方便用户编写、执行SQL语句以及管理数据库对象。 总之,《数据库原理与应用SQL Server 2005》是一本全面的教程,涵盖了SQL Server ...

    sql注入原理简介

    一方面,它能够帮助开发者识别并修补应用程序中的安全漏洞,保护数据库免受攻击。另一方面,对于安全研究人员和渗透测试人员而言,深入理解SQL注入的工作原理,有助于在进行安全测试时,更准确地发现和修复潜在的...

    数据库原理 SQL 应用程序和介绍

    《数据库原理与SQL应用》是一门面向初学者的教程,旨在教授基本的数据库知识和SQL语言的使用。这个课程覆盖了数据库设计、SQL查询、数据操作以及数据库管理系统的基础概念,适合那些希望自学或进行实践测试的人群。 ...

    SQL Server数据库原理及应用(第二版)教案

    最后,课程可能还会涉及一些进阶主题,如数据仓库和商业智能,以及SQL Server与.NET、Java等编程语言的集成,帮助开发人员构建数据驱动的应用程序。 通过《SQL Server数据库原理及应用(第二版)教案》,学习者不仅...

    sql注入原理

    - **概念**:SQL注入攻击发生在应用程序将未经适当清理的用户输入直接拼接到SQL查询中时。攻击者可以通过这种方式向数据库发送任意的SQL命令。 - **原理**:攻击者利用已知的或推测的SQL语法结构,插入额外的SQL...

    sql注入攻击原理分析

    这些位置通常出现在应用程序接收用户输入并将其作为SQL查询的一部分使用的场景中。例如,一个简单的用户登录界面可能包含用户名和密码输入框,如果开发者没有正确处理这些输入,则可能会成为SQL注入的入口点。 ####...

    计算机病毒与防护:SQL注入原理.ppt

    SQL注入是一种常见的网络安全威胁,主要针对使用SQL(结构化查询语言)的Web应用程序。这种攻击手段是由于应用程序在处理用户输入时没有进行充分的验证和过滤,使得攻击者可以插入恶意的SQL代码,从而控制或操纵...

    Delphi版SQL查询分析器源程序..rar

    此外,对于想要开发自己的数据库工具或者增强现有应用程序数据库功能的开发者来说,这样的源程序提供了宝贵的参考和学习资源。 总之,Delphi版SQL查询分析器源程序是一个宝贵的教育和实践工具,它展示了如何在...

    ABAP SQL 查询 程序

    它可能包含示例查询,帮助开发者更好地理解Open SQL的工作原理和用法。 总的来说,ABAP Open SQL为ABAP程序员提供了强大的数据库操作能力,结合SAP的业务逻辑,能够高效地开发企业级应用。理解并熟练掌握Open SQL是...

    SQL server 2000的驱动程序

    在SQL Server 2000中,驱动程序是连接客户端应用程序与服务器的重要组件,它们允许应用程序通过ODBC(Open Database Connectivity)或者JDBC(Java Database Connectivity)等接口与数据库进行交互。以下将详细介绍...

    sql,编译原理课件

    在SQL的上下文中,编译原理尤为重要,因为数据库管理系统(如SQL Server 2000)在执行查询时,需要经历类似的编译过程。当用户提交一个SQL查询时,数据库系统首先进行词法和语法分析,然后对查询进行优化,比如决定...

    SQL 查询分离分析器

    通过分析查询语句,它能有效地减少资源消耗,提升应用程序的运行效率,特别是在大数据量和高并发的场景下,这样的工具显得尤为重要。 在压缩包文件“sqlquery”中,可能包含了软件的安装程序、使用手册、示例查询...

    数据库原理与SQL Server2005应用教程

    1. 数据库对象:包括表、视图、索引、存储过程、函数、触发器等,它们是构建数据库应用程序的基础。 2. 表:存储数据的基本单元,由列和行构成,列定义数据类型,行代表具体数据。 3. 索引:提高查询速度的结构,有...

    sql 数据库原理与应用答案

    - 数据库系统采用三级模式结构(外模式、模式、内模式)和两级映射(外模式/模式映射、模式/内模式映射),以确保数据独立性,即使数据的物理结构或逻辑结构发生变化,应用程序也无需修改。 2. 数据模型 - 数据...

Global site tag (gtag.js) - Google Analytics