首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一条 sql 的执行过程详解

2、缓存(Cache)   也称为查询缓存,存储的数据是以键值对的形式进行存储,如果开启了缓存,那么在一条查询sql语句进来时会先判断缓存中是否包含当前的sql语句键值对,如果存在直接将其对应的结果返回...5、在存储的函数,触发器或事件的主体内执行的查询。 6、如果表更改,则使用该表的所有高速缓存查询都变为无效并从缓存中删除,这包括使用 MERGE 映射到已更改表的表的查询。...优化器会根据执行计划选择最优的选择,匹配合适的索引,选择最佳的方案。...4、undo log 记录的是行记录变化前的数据;redo log 记录的是 sql 或者是数据页修改逻辑或 sql(个人理解);bin log记录的是修改后的行记录(5.7默认)或者sql语句。...筛选过程是先根据 Index Key 的条件先在引擎层进行初步筛选,然后得到对应的主键值进行回表查询得到初筛的行记录,传入 Server 层进行后续的筛选,在 Server 层的筛选因为没有用到索引所以会进行全表扫描

69530

一条 sql 的执行过程详解

2、缓存(Cache)   也称为查询缓存,存储的数据是以键值对的形式进行存储,如果开启了缓存,那么在一条查询sql语句进来时会先判断缓存中是否包含当前的sql语句键值对,如果存在直接将其对应的结果返回...5、在存储的函数,触发器或事件的主体内执行的查询。 6、如果表更改,则使用该表的所有高速缓存查询都变为无效并从缓存中删除,这包括使用 MERGE 映射到已更改表的表的查询。...优化器会根据执行计划选择最优的选择,匹配合适的索引,选择最佳的方案。...4、undo log 记录的是行记录变化前的数据;redo log 记录的是 sql 或者是数据页修改逻辑或 sql(个人理解);bin log记录的是修改后的行记录(5.7默认)或者sql语句。...筛选过程是先根据 Index Key 的条件先在引擎层进行初步筛选,然后得到对应的主键值进行回表查询得到初筛的行记录,传入 Server 层进行后续的筛选,在 Server 层的筛选因为没有用到索引所以会进行全表扫描

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQL语句执行过程详解

    3、分析器 4、优化器 5、执行器 Server层 存储引擎(InnoDB)层 三个日志的比较(undo、redo、bin) 执行过程 Where 条件的提取 SQL执行顺序 写操作 读操作 文章正文:...2、缓存(Cache)   也称为查询缓存,存储的数据是以键值对的形式进行存储,如果开启了缓存,那么在一条查询sql语句进来时会先判断缓存中是否包含当前的sql语句键值对,如果存在直接将其对应的结果返回...5、在存储的函数,触发器或事件的主体内执行的查询。 6、如果表更改,则使用该表的所有高速缓存查询都变为无效并从缓存中删除,这包括使用 MERGE 映射到已更改表的表的查询。...优化器会根据执行计划选择最优的选择,匹配合适的索引,选择最佳的方案。...筛选过程是先根据 Index Key 的条件先在引擎层进行初步筛选,然后得到对应的主键值进行回表查询得到初筛的行记录,传入 Server 层进行后续的筛选,在 Server 层的筛选因为没有用到索引所以会进行全表扫描

    2.3K30

    Sql server之sql注入

    这里有一些sql注入的事件大家感兴趣可以看一下 防范sql注入的方法无非有以下几种: 1.使用类型安全的SQL参数 2.使用参数化输入存储过程 3.使用参数集合与动态SQL 4.输入滤波 5.过滤LIKE...SQL Server 处理该语句时,SQL Server 将首先选择 OrdersTable 中的所有记录(其中 ShipCity 为 Redmond)。...(4)使用 XML 文档时,根据数据的架构对输入的所有数据进行验证。 (5)绝不直接使用用户输入内容来生成 Transact-SQL 语句。 (6)使用存储过程来验证用户输入。...将对此值进行类型和长度检查。如果 @au_id 值不符合指定的类型和长度约束,则将引发异常。 存储过程如果使用未筛选的输入,则可能容易受 SQL Injection 攻击。...4.筛选输入 筛选输入可以删除转义符,这也可能有助于防止 SQL 注入。

    5.7K30

    SQL Server 使用全文索引进行页面搜索

    全文索引是一种特殊类型的基于标记的功能性索引,它是由 SQL Server 全文引擎生成和维护的。生成全文索引的过程不同于生成其他类型的索引。...从 SQL Server 2008 开始,全文搜索体系结构包括以下进程: SQL Server 进程 (sqlservr.exe) 筛选器后台程序宿主进程 (fdhost.exe)。...在 SQL Server 2008 和更高版本中,SQL Server 的全文引擎在 SQL Server 查询处理器内部运行。 索引编写器(索引器) 索引编写器生成用于存储索引标记的结构。...其职责之一是从全文索引列中收集数据,并将所收集的数据传递给筛选器后台程序宿主,从而由该宿主根据需要应用筛选和断字符。...2.选择需要全文搜索的列,并且选择断字符语言,因为该字段主要用来存储中文,所以这里也选择了简体中文。

    3.3K70

    MySQL:概述

    ---- 二、MySQL的逻辑架构 MySQL 的逻辑架构大致可以分为三层:客户端、Server层、存储引擎层 第一层:客户端(服务器层):主要做连接处理、授权认证、安全保障等等; 第二层:Server...存储过程,触发器,视图等跨存储引擎的功能也都在这一层实现。 Server 层基本组件: 连接器:我们使用数据库,第一步是连接到数据库。...; 执行器:首先执行前会校验该用户有没有权限,如果没有权限,就会返回错误信息,如果有权限,就会根据执行计划去调用引擎的接口,返回结果。...存储引擎层:主要负责数据的存储和提取,Server层通过 API 与存储引擎层进行交互。服务器通过 API 与存储引擎通信,这些接口屏蔽了不同存储引擎的差异,使得差异对上层查询过程透明。...,逐行判断是否满足查询条件,满足放到结果集,最终返回给客户端;若用到索引,筛选行也会根据索引筛选。

    52510

    SQL Server 使用全文索引进行页面搜索

    全文索引是一种特殊类型的基于标记的功能性索引,它是由 SQL Server 全文引擎生成和维护的。生成全文索引的过程不同于生成其他类型的索引。...从 SQL Server 2008 开始,全文搜索体系结构包括以下进程: SQL Server 进程 (sqlservr.exe) 筛选器后台程序宿主进程 (fdhost.exe)。...在 SQL Server 2008 和更高版本中,SQL Server 的全文引擎在 SQL Server 查询处理器内部运行。 索引编写器(索引器) 索引编写器生成用于存储索引标记的结构。...其职责之一是从全文索引列中收集数据,并将所收集的数据传递给筛选器后台程序宿主,从而由该宿主根据需要应用筛选和断字符。...2.选择需要全文搜索的列,并且选择断字符语言,因为该字段主要用来存储中文,所以这里也选择了简体中文。

    2.9K50

    基于业务对象(列表)的筛选

    >.Sort();当我们需要对数据进行分页的时候我们想到的是存储过程,而不是List.GetRange()。...可以看到,在上面的模式中,为了根据用户的选择显示不同的数据,每次用户的操作都要进行对数据库的一次访问,我们看一下具体的实现是怎样的。...将返回的数据(已经转换成了List业务对象),全部进行缓存。 根据用户的选择对缓存中的 List 进行筛选,返回筛选结果,显示在页面上。...大家可以打开Sql Server2000的事件探查器(Sql Server2005下的Sql Server Profiler)。选择“文件” --> “新建” --> “跟踪” --> 进行登录。...选择“事件”选项卡,之后如下图所示: ? 从右侧“选定的事件”中删除“存储过程”、“安全审查”、“会话”,只保留“T-SQL”,我们只对它进行监视。

    1.9K50

    Mysql数据库基础知识总结,结构分明,内容详细

    b.单行函数 操作数据对象 接受参数返回一个结果 只对一行进行变换 每行返回一个结果 可以嵌套 参数可以是一列或一个值 数值函数 基本函数 举例 SELECT ABS(-123),...存储过程分类 存储过程的参数类型可以是IN、OUT和INOUT。...根据这点分类如下: 1、没有参数(无参数无返回) 2、仅仅带 IN 类型(有参数无返回) 3、仅仅带 OUT 类型(无参数有返回) 4、既带 IN 又带 OUT(有参数有返回) 5、带 INOUT...(有参数有返回) 注意:IN、OUT、INOUT 都可以在一个存储过程中带多个。...如果没有定义参数种类, 默认就是 IN ,表示输入参数。 OUT :当前参数为输出参数,也就是表示出参; 执行完成之后,调用这个存储过程的客户端或者应用程序就可以读取这个参数返回的值了。

    1.2K41

    经典SQL语句大全之基本函数

    如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。...SET NOCOUNT 为 OFF 时,返回计数 常识 在SQL查询中:from后最多可以跟多少张表或视图:256在SQL语句中出现 Order by,查询时,先排序,后取在SQL中,一个字段的最大容量是...IP) 开始--程序--Microsoft SQL Server--客户端网络实用工具 --别名--添加--网络库选择"tcp/ip"--服务器别名输入SQL服务器名--连接参数--服务器名称中输入SQL...我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)(4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如 orACLE或ACCESS之间进行数据复制...(6)选择发布名称和描述(7)自定义发布属性 向导提供的选择: 是 我将自定义数据筛选,启用匿名订阅和或其他自定义属性 否 根据指定方式创建发布 (建议采用自定义的方式) (8)[下一步] 选择筛选发布的方式

    72720

    mysql

    (2)、IN类型参数一般只用于传入,在调用过程中一般不作为修改和返回         (3)、如果调用存储过程中需要修改和返回值,可以使用OUT类型参数 通过一个实例来演示: 需求:编写存储过程,传入id...:在调用存储过程中,可以改变其值,并可返回;         2、out是传出参数,不能用于传入参数值;         3、调用存储过程时,out参数也需要指定,但必须是变量,不能是常量;         ...4、如果既需要传入,同时又需要传出,则可以使用INOUT类型参数     (3).存储过程的可变参数INOUT         需求:调用存储过程时,传入userId和userName,即使传入,也是传出参数...SET NOCOUNT 为 OFF 时,返回计数常识 在SQL查询中:from后最多可以跟多少张表或视图:256在SQL语句中出现 Order by,查询时,先排序,后取在SQL中,一个字段的最大容量是...(6)选择发布名称和描述(7)自定义发布属性 向导提供的选择:是 我将自定义数据筛选,启用匿名订阅和或其他自定义属性否 根据指定方式创建发布 (建议采用自定义的方式)(8)[下一步] 选择筛选发布的方式

    61230

    使用VS.NET2003编写存储过程

    在本应用中,所有数据存取工作都将通过 SQL Server 存储过程(stored procedures,有时称作“stored procs”或“sprocs”)来处理。...例如,根据您的输入模式,恶意用户不仅可以输入 13 或 21 作为有效的表 ID,还可以输入 13; DELETE FROM USERS 或其他可能会带来危害的语句。...创建存储过程并将其存储到数据库中时,SQL Server 会对其文本进行评估并以优化的形式进行存储,从而使之更容易在运行时为 SQL Server 所用。...首先,您会在存储过程顶端看到一个参数列表。除前两个参数外,其他参数均被标记为 OUTPUT 参数。这些参数用于返回选定记录的值。使用一条记录的返回值要比返回带有所有字段的记录集合更为高效。...再其次,您会发现检查 @ID 参数,以确保其代表一条现有记录。如果不是现有记录,则传送返回代码 101 并终止执行。最后,如果输入变量都有效,存储过程将尝试选择记录并返回相应的值。

    2.2K20

    Microsoft Sync Framework 2.1 软件开发包 (SDK)

    通过将您企业内部部署的 SQL Server 数据库与 SQL Azure 进行同步,可以在 Web 上提供您的部分或所有数据,而无需通过为客户提供连接来访问您内部部署的 SQL Server 数据库。...将 SQL Azure 数据库配置用于同步后,用户可以使数据脱机并将其存储在客户端数据库(如 SQL Server Compact 或 SQL Server Express)中,这样您的应用程序可以在断开连接的状态下工作...成批应用变更 Sync Framework 2.1 利用 SQL Server 2008 和 SQL Azure 的表值参数功能通过使用单个存储过程调用来应用多个插入、更新和删除操作,而不是要求存储过程调用应用每一变更...创建筛选器模板是要求在数据库服务器中创建存储过程的权限的唯一操作。此步通常由数据库管理员执行。 易于订阅。客户端指定要创建的参数值并且根据需要订阅经过筛选的作用域。...Sync Framework 可以将 2.0 格式的数据库与 2.0 或 2.1 格式的数据库进行同步。因此,不需要同时升级同步社区中的所有数据库。

    1.2K70

    数据库工程师常见面试题

    答: 存储过程,功能强大,可以执行包括修改表等一系列数据库操作,也可以创建为 SQL Server 启动 时自动运行的存储过程。...存储过程,可以使用非确定函数。自定义函数,不允许在用户定义函数主体中内置非确定函数。 存储过程,可返回记录集。 自定义函数,可以返回表变量, 也可以有任意个输出参数。...存储过程,其返回值不能被直接引用,必须单独调用。 自定义函数,其返回值可以被直接引用,也就是 可以直接 select * from 函数。 问题 19: 视图的作用是什么?...定义视图的筛选可以 来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的 视图。...问题 22: 自定义函数支持输出参数吗? 答: 自定义函数可以接受零个或多个输入参数,其返回值可以是一个数值,也可以是一个表,但是自 定义函数不支持输出参数。

    3K40

    .NET开发工程师的常见面试题

    Server排名函数:row_number()、rank()、dense_rank() 区别: 使用exec和sp_executesql动态执行SQL语句 当需要根据外部输入的参数来决定要执行的SQL...一个比较通用的分页存储过程,可能需要传入表名,字段,过滤条件,排序等参数,而对于搜索的话,可能要根据搜索条件判断来动态执行SQL语句。...函数限制比较多,比如不能用临时表,只能用表变量等;而存储过程的限制相对就比较少,几乎所有的Sql代码都可以使用。...对于存储过程来说可以返回一个或多个输出参数,也可以返回多个结果集,而函数只能返回一个值或者表对象。 数据库索引是什么?有什么作用? 数据库索引:是数据库表中一列或多列的值进行排序的一种结构。...作用:从包括多条数据记录的结果集中每次提取一条记录。游标类似于程序代码中对集合的遍历循环,能够遍历结果中的所有行,在遍历过程中,每次只读取一行的数据。

    5.5K30

    存储过程

    存储过程简介 什么是存储过程:存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字...@parameter: 存储过程的参数。可以有一个或多个。用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。存储过程最多可以有 2.100 个参数。...所有数据类型(包括 text、ntext 和 image)均可以用作存储过程的参数。不过,cursor 数据类型只能用于 OUTPUT 参数。...默认值必须是常量或 NULL。如果过程将对该参数使用 LIKE 关键字,那么默认值中可以包含通配符(%、_、[] 和 [^])。 7.OUTPUT :表明参数是返回参数。...该选项的值可以返回给 EXEC[UTE]。使用 OUTPUT 参数可将信息返回给调用过程。Text、ntext 和 image 参数可用作 OUTPUT 参数。

    2K30

    一条SQL如何被MySQL架构中的各个组件操作执行的?

    根据class_no对满足条件的记录进行分组。 执行器将处理后的结果集返回给客户端。   在整个查询执行过程中,这些组件共同协作以高效地执行查询。...在查询执行过程中,执行器会根据ON子句中的条件从存储引擎获取满足条件的记录。如果连接条件涉及到索引列,存储引擎可能会使用索引进行优化。...在查询执行过程中,执行器会根据优化器选择的执行计划,从存储引擎中获取需要连接的表的数据。然后,执行器根据JOIN子句的类型和ON子句中的连接条件,对数据进行连接操作。...虽然驱动表的选择很大程度上是基于预估的返回记录数,但实际选择还会受其他因素影响,例如表之间的连接类型、可用的索引等。 使用驱动表的索引进行筛选: 优化器会首先对驱动表进行筛选。...进一步的筛选: 在连接的过程中,执行器会考虑student表的其他筛选条件,如age > 18,通常连接后才过滤筛选,这也是执行器的工作,执行器在连接过程中或之后,根据优化器制定的计划进一步筛选结果集。

    97130

    MySQL架构(一)SQL 查询语句是如何执行的?

    等值连接:从 t1 表中取出每一条记录,去 t2 表中与所有的记录进行匹配,匹配必须是某个条件在 t 表中与 t2 表中相同最终才会保留结果,否则不保留。...调用存储引擎接口取目标表的第一行,判断是否满足条件,若不是则跳过,若是则将这行存在结果集中; 调用存储引擎接口取下一行,重复第 1 步的判断逻辑,直到取到这个表的最后一行; 执行器将上述遍历过程中所有满足条件的行组成的记录集作为结果集返回给客户端...每个存储引擎都有自己的特点和适用场景。存储引擎层负责将数据存储在磁盘上,并提供相应的索引、事务处理和并发控制等功能。用户可以根据需求选择合适的存储引擎。...Server 层和存储引擎层之间通过 API 进行通信。API 定义了存储引擎层与 Server 层之间的接口规范,使得不同存储引擎可以与 Server 层进行无缝衔接。...用户可以根据需要选择不同的存储引擎,从而实现对数据的不同操作和存储方式的灵活选择。 Server 层 处理 SQL 语句、解析、优化、缓存等。 权限管理、用户认证等。 提供了复制、备份、恢复等功能。

    13420

    MSSQL日志安全分析技巧

    0x01 MSSQL日志分析 首先,MSSQL数据库应启用日志记录功能,默认配置仅限失败的登录,需修改为失败和成功的登录,这样就可以对用户登录进行审核。 ?...登录到SQL Server Management Studio,依次点击 管理--SQL Server 日志 ? 双击日志存档文件即可打开日志文件查看器,并可以对日志进行筛选或者导出等操作。 ?...日志分析案例: 在日志文件查看器中,选择筛选,在筛选设置中源设置为“登录”,应用筛选器,确定。 ?...筛选后的结果,可以很清晰的识别用户登录信息,记录内容包括用户登录时间、登录是否成功、登录使用的账号以及远程登录时用户使用的IP地址。...0x02 SQL注入入侵痕迹 在利用SQL注入漏洞的过程中,我们会尝试利用sqlmap的--os-shell参数取得shell,如操作不慎,可能留下一些sqlmap创建的临时表和自定义函数。

    1.7K30

    灵魂两问:MySQL分页有什么性能问题?怎么优化?

    只有当数据满足所有查询条件(例如WHERE子句中的条件)时,这些数据才会被加入到最终的结果集中,随后返回给客户端应用程序,比如使用Go或Java编写的应用。...叶子节点存储的内容会根据其对应的索引类型而有所区别。对于主键索引来说,其叶子节点直接包含了完整的行记录信息。...对于主键索引,数据按照主键的值从小到大排序;而对于非主键索引,则根据索引列的值进行排序。基于主键索引的limit执行过程那么回到文章开头的问题里。当我们去掉explain,执行这条sql。...但不同的地方在于,在返回server层的过程中,只会拷贝数据行内的id这一列,而不会拷贝数据行的所有列,当数据量较大时,这部分的耗时还是比较明显的。...对于需要实现复杂搜索或筛选功能的应用,Elasticsearch(ES)是一个更合适的选择,因为它专门为处理大量数据的搜索、筛选和排序任务而设计。

    79210
    领券